find Linux command tricks asked in exams and how to write
======================
A
The find Operators (!, -o, and -a)
There are three operators that are commonly used with find. The ! operator is used
before an option to negate its meaning. So,
find . ! -name "*.c" -print
selects all but the C program files.
B
To look for both shell and perl scripts, use the -o operator, which represents an OR condition. We need to use an escaped pair of parentheses here:
find /home \( -name "*.sh" -o -name "*.pl" \) -print The ( and ) are special characters that are interpreted by the shell to run commands in a group. The same characters are used by find to group expressions using the -o and -a operators, the reason why they need to be escaped.
C
Also to find all *.sh (shell scripts) files for user tux execute:
find /home -user "tux" -name "*.sh" -print find /home -user "tux" -name "*.sh" -exec ls {} >| file.txt \; # write listing in file.txt these two commands are equivalent to these two >>> find /home \( -user "tux" -a -name "*.sh" \) -print find /home \( -user "tux" -a -name "*.sh" \) -exec ls {} >| file.txt \; # write listing in file.txt I conclude in some commands use find for finding: Directories with sticky bit set: find / -type d -perm -1000 -exec ls -ld {} \; Files with SGID set: find / -type f -perm -2000 -exec ls -l {} \; Files with SUID set: find / -type f -perm -4000 -exec ls -l {} \; Files with SUID and SGID set: find / -type f \( -perm -4000 -a -perm -2000 \) -exec ls -l {} \; Files with SUID or SGID set: find / -type f \( -perm -4000 -o -perm -2000 \) -exec ls -l {} \; Note: ALL THESE COMMANDS - IF NOT WORK - MAKE THE APPROPRIATE SPACING eg \( -user "tux" like exactly I write
Further Reading Resources