Linux非常强大的一个命令find
find
命令是 Linux 和 Unix 系统中非常强大的一个命令,用于在目录树中搜索文件,并执行指定的操作。它可以基于各种条件来搜索文件,比如文件名、文件类型、大小、修改时间等。
基本语法
find [搜索路径] [选项] [操作]
- 搜索路径:指定
find
命令开始搜索的目录路径。如果省略,则默认为当前目录。 - 选项:用来指定搜索的条件。
- 操作:对符合条件的文件执行的操作。如果省略,则默认输出匹配的文件名。
常用选项
-name
:按文件名搜索。-iname
:按文件名搜索,不区分大小写。-type
:按文件类型搜索(f 表示文件,d 表示目录,l 表示链接文件等)。-size
:按文件大小搜索。例如,+100M
表示大于 100MB 的文件。-mtime
:按文件内容最后修改时间搜索。例如,-mtime -7
表示在最近 7 天内修改过的文件。-user
:按文件属主搜索。-group
:按文件所属组搜索。-exec
:对符合条件的文件执行指定的 shell 命令。
示例
-
查找当前目录及子目录下所有名为
example.txt
的文件:find . -name example.txt
-
不区分大小写查找名为
example.txt
的文件:find . -iname example.txt
-
查找当前目录及子目录下所有的目录:
find . -type d
-
查找当前目录及子目录下所有大于 10MB 的文件:
find . -type f -size +10M
-
查找最近 7 天内修改过的文件:
find . -type f -mtime -7
-
对查找到的每个文件执行
ls -l
命令:find . -type f -exec ls -l {} \;
这里
{}
是一个特殊的字符串,对于每一个匹配的文件,find
命令会将{}
替换为相应的文件名。\;
是命令的结束符,告诉find
命令-exec
选项到此结束。 -
查找空目录:
find . -empty -type d
-
查找空文件:
find . -empty -type f
-
查找空文件并删除:
find . -empty -type f -print -delete
-
查找空目录并删除:
find . -empty -type d -print -delete
-
查找权限:
find . -perm 755
-
查找所有者权限有读权限的目录或文件:
find . -perm -u=r
-
查找用户组权限有读权限的目录或文件:
find . -perm -g=r
-
查找其它用户权限有读权限的目录或文件:
find . -perm -o=r
-
通过所有者 和 所属组去查找文件:
find . -user xxx find . -group xxx
find
命令非常强大,通过组合不同的选项和条件,你可以几乎实现任何类型的文件搜索任务。