find命令的工作方式如下:沿着文件层次结构向下遍历,匹配符合条件的文件,执行相应的操作。默认的操作是打印出文件和目录,这也可以使用-print选项来指定。
要列出给定目录下所有的文件和子目录,可以采用下面的语法:
$ find . -print
. 指定当前目录,. . 指定父目录。这是Unix文件系统中的约定用法。
print选项使用\n(换行符)分隔输出的每个文件或目录名。而-print0选项则使用空字符’\0’来分隔。
$ find / '*.txt' -print
查找所有扩展名为txt的文件
$ find . \( -name '*.txt' -o -name '*.pdf' \) -print
查找当前目录下扩展名为txt和pdf的文件。。\(以及\)用于将 -name '.txt’ -o -name '.pdf’视为一个整体。-o 是or的意思
$ find . \( -name '*e*' -and -name 's*' \)
这个是查找当前目录下以s开头包括e的文件
-path选项可以限制所匹配文件的路径及名称。例如,$ find /home/users -path'*/slynux/*' -name '*.txt' –print
能够匹文件/home/users/slynux/readme.txt,但无法匹配/home/users/slynux.txt。
-regex选项和-path类似,只不过前者是基于正则表达式来匹配文件路径的。
打印出在最近3天内被访问过的所有文件。
$ find . -type f -atime -3 -print
打印出恰好在3天前被访问过的所有文件。
$ find . -type f -atime 3 -print
打印出访问时间超过3天的所有文件。
$ find . -type f -atime +3 -print
-mtime选项会根据修改时间展开搜索,-ctime会根据变化时间展开搜索。