find命令

find命令用来在指定目录下查找文件,任何位于参数之前的字符串都将被视为要查找的目录名,如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件,并且将查找到的子目录和文件全部进行显示。

语法

find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec|time] [path...] [expression]

参数

示例

查找/tmp/目录及其子目录下所有拓展名为py的文件。

find /tmp/ -name *.py
# /tmp/file.py

查找/tmp/目录及其子目录下所有一般文件。

find /tmp/ -type f
# /tmp/file.c
# /tmp/file.txt
# /tmp/a.out
# /tmp/www/1.txt
# /tmp/file.py
# /tmp/file
# ...

查找/tmp/目录及其子目录下所有最近1天内更改过的文件,+1则表示1天前更改过文件。

find /tmp/ -ctime -1
# /tmp/
# /tmp/1
# /tmp/file.txt
# /tmp/file

查找/tmp/目录及其子目录下所有更改时间在7日以前的普通文件,并在删除之前询问是否删除。

find /tmp/ -type f -mtime +7 -ok rm {} \;
# < rm ... /tmp/file.py > ? n
# ...

查找/tmp/目录及其子目录下所有文件属主具有读、写权限,并且文件所属组的用户和其他用户具有读权限的文件。

find /tmp/  -type f -perm 644 -exec ls -l {} \;
# -rw-r--r-- 1 root root 60 Jul 22 19:55 /tmp/file.c
# -rw-r--r-- 1 www www 73 Jul 23 20:54 /tmp/file.txt
# ...

查找/tmp/目录及其子目录下所有文件长度为0的普通文件,并列出它们的完整路径。

find /tmp/ -type f -size 0 -exec ls -l {} \;
# -rwx------ 1 root root 0 Jul 11 17:25 /tmp/file.py

参考

https://man.linuxde.net/find
https://www.runoob.com/linux/linux-comm-find.html
https://www.tutorialspoint.com/unix_commands/find.htm