有时可能需要在系统中查找具有某一特征的文件 (例如文件权限、文件属主、文件长度、文件类型等等 ),find命令很有效。
find pathname -options [-print -exec -ok]
-print find命令将匹配的文件输出到标准输出。
-exec find命令对匹配的文件执行该参数所给出的 s h e l l命令。相应命令的形式为 'command' {} \;,注意{ }和\;之间的空格。
-ok 和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的 shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。
-name 按照文件名查找文件。
-perm 按照文件权限来查找文件。
-prune 使用这一选项可以使 f i n d命令不在当前指定的目录中查找,如果同时使用了 -depth选项,那么-prune选项将被find命令忽略。
-user 按照文件属主来查找文件。
-group 按照文件所属的组来查找文件。
-mtime -n +n 按照文件的更改时间来查找文件,-n表示文件更改时间距现在 n天以内,+n表示文件更改时间距现在 n天以前.find命令还有-atime和-ctime选项,但它们都和-mtime选项相似
示例:
-
使用name选项:
find ~ -name "*.txt" -print find . -name "*.txt" -print find . -name "[A-Z]*" -print find /etc -name "host*" -print find ~ -name "*" -print find . -print find . -name "[a-z][a-z][0-9][0-9].txt" -print
- 使用perm选项
find . -perm 755 -print find . -perm -007 -print find -perm mode find -perm -mode find -perm +mode
- 忽略某个目录
find /apps -name "/apps/bin" -prune -o -print
- 使用user和nouser
find ~ -user aaron -print find /etc -user root -print find /home -nouser -print
- 使用group和nogroup选项
find /apps -group accts -print find /apps -nogroup -print
- 使用time
find /home -mtime -5 -print find /home -mtime +3 -print
- 比较文件新或旧
newest_filename ! oldest_filename find . -newer age.awk ! -newer belts.awk -exec ls -l {} \;
- type
find /etc -type d -print find . ! -type d -print
- size
find . -size +1000000c -print find . -size 1000000c -print find . -size +100 -print
- depth
find /home -name "aaron.txt" -depth -print
- mount:在当前文件系统中查找
find . -name "test" -mount -print
- exec/ok
find . -type f -exec ls -l {} \; find logs -type f -mtime +5 -exec rm {} \; find . -name "*.LOG" -mtime +5 -ok rm {} \; find /etc -name "passwd*" -exec grep "rounder" {} \;
- find的例子
1、匹配home下的所有文件
find /home -print find ~ -print
2、综合举例
find . -type f -perm 4755 -print find / -type f -size 0 -exec ls -l {} \; find /var/logs -type f -mtime +7 -exec rm {} \; find /logs -name 'admin.log[0-9][0-9][0-9]' -mtime +7 -exec rm {} \; find . -type d -print -local -mount | sort
- xargs: -exec的改进版
find /home -type f -print | xargs file find . -name "core" -print | xargs echo "" > /tmp/core.log
- 使用perm选项