find pathname -options [-print -exec -ok]
pathname find命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目录。
-print find命令将匹配的文件输出到标准输出。
-exec find命令对匹配的文件执行该参数所给出的shell命令。
相应命令的形式为'command'{} \;,注意{}和\;之间的空格。
-ok和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行
文件状态判断:
-mtime: 指定时间文件内容被修改过
-ctime: 指定时间文件权限被修改过
-atime: 指定时间文件被读取过
找出3天“以前”被修改过的文档
# find /root/ -mtime +3 -type f -print
找出3天“内”被修改过的文档
# find /root/ -mtime -3 -type f -print
找出第3天被修改过的文档.(今天5号的话,第3天应该是2号)
# find /root/ -mtime 3 -type f -print
或这样写:
#find /root/ -mtime +2 -mtime -4 -type f -print
查找晚于某个文件创建日期的文件
假定您想显示所有在某个文件创建日期之后修改过的文件。要显示 /home/leslie 目录及其子目录下所有晚于myfile 创建日期的文件,请输入:
$ find /home/leslie -newer myfile |
本示例可以理解为:在目录 /home/leslie 及其子目录下,查找所有在 myfile 创建日期之后修改过的文件。(要确定文件的上次修改日期,请使用 ll 命令。)
|
使用逻辑运算符 |
![](http://docs.hp.com/img/s.gif) |
find 的语法中包括逻辑布尔运算符:NOT、AND 和 OR。
要查找不符合特定模式的文件,请使用 NOT 逻辑运算符,即感叹号 (!)。使用此运算符之后,必须使用选项定义文件属性,如文件名。然后,将找到不具有指定属性的文件。
例如,要查找 /tmp 下所有不属于 leslie 的文件,请使用以下命令:
$ find /tmp \( ! -user leslie \) |
\ 避免了 shell 将圆括号视为特殊字符的可能性。
要查找具有两个不同属性的文件,请使用 AND 逻辑运算符(表达式 -a 表达式)。例如,要查找 / 下所有属于 leslie 的目录,请使用以下命令:
$ find / \( -type d -a -user leslie \) |
要查找具有其中一个或两个属性的文件,请使用 OR 逻辑运算符(表达式 -o 表达式)。例如,要删除一周以来从未访问过的以 .o 结尾或名为 a.out 的所有文件,请使用以下命令:
$find / \( -name a.out -o -name '*.o' \) -atime +7 -exec rm {} \; |