Find Tips & Tricks
Contents
Common usage
$ find . -type d -exec chmod 755 {} \;
$ find . -type f -exec chmod 644 {} \;
Using Regular Expressions (regex)
If the "-name" option cannot satisfy your need, remember to use the "-regex" option, which offers more powerful parttern matching:
$ find . -regex pattern -print
"prune" option tricks
Note that:
$ find . -path '*/.zhigang' -prune -o -type f
is equivalent to:
$ find . \( -path '*/.zhigang' -prune -o -type f \) -print'
ie., "-print" is added at the outer level; but "-o" binds lower than "-a", thus:
$ find . -path '*/.zhigang' -prune -o -type f -print
is equivalent to:
$ find . -path '*/.zhigang' -prune -o \( -type f -print \)
Exclude some directories when finding files
$ find / \( -path '/usr' -o -path '/proc' \) -prune -o -name 'httpd.conf' -print $ find . -maxdepth 1 -type f
Use find to tar part of a tree only
If you are not worried about the tree structure including empty directories:
$ cd A; tar cvf - `find . -type f -print | grep -v B` | gzip > x.tar.Z
If you do want the full structure apart from B:
$ tar cvf - `find A/* -type d -print | grep -v B` | gzip > x.tar.Z
or use tar only:
$ tar cvf - --exclude | gzip -f - > tree.tar.gz
Find SUID/SGID commands
# find / \( -perm -004000 -o -perm -002000 \) -type f -print # find / \( -path '/nfs' -prune \) \( -perm -004000 -o -perm -002000 \) -type f -print # find / -xdev \( -perm -004000 -o -perm -002000 \) -type f -print
Be sure that you are the superuser when you run find, or you may miss SUID files hidden in protected directories.
Find keyword in Kconfigs in Linux kernel source tree
$ find . -name "Kconfig" -exec grep -H "dmesg" {} \;
