简介
find 命令的基本结构如下:
find [paths] [expression] [actions]
常用参数汇总
参数 | 解析 |
---|---|
-name pattern | 搜索时使用 pattern 对文件名进行匹配 |
-atime n[smhdw] | 距离文件上次被访问时的时间间隔 |
-ctime n[smhdw] | 距离文件创建时的时间间隔 |
-delete | 删除检索到的文件 |
-depth n | 检索深度为 n 的文件,即位于指定目录以下 n 层的文件 |
-empty | 检索空文件或空目录 |
-fstype type | 指定文件所在的文件系统的类型 |
-group gname | 指定文件的属组 |
-iname pattern | 同 -name,忽略大小写 |
-ipath pattern | 同 -path,忽略大小写 |
-ls | 打印搜索到的文件的详细信息 |
-maxdepth n | 指定递归的最大层数为 n |
-mtime n[smhdw] | 距离文件上次发生变更时的时间间隔 |
-path pattern | 搜索时使用 pattern 对文件路径进行匹配 |
-perm mode | 根据文件权限搜索 |
-size n[ckMGTP] | 根据文件大小搜索 |
-type t | 根据文件类型搜索 |
-user uname | 指定文件的属主 |
常用命令
1、根据文件名检索
- ? 可以表示任意一个单一的符号
- * 可以表示任意数量(包括 0)的未知符号
find /usr -name '*.txt'
查找 /usr 目录下所有文件名以 .txt 结尾的文件
find /usr -name '????'
查找 /usr 目录下所有文件名刚好为 4 个字符的文件
如查找 /usr 下所有文件名以 .txt 结尾的文件或目录,且该文件的父目录必须是 src。可以使用以下命令:
find /usr -path '*/src/*.txt'
2、根据文件类型检索
- f: 文件
- d: 目录
- l: 符号链接
find /usr -type d -name 'python*'
检索 /usr 下所有文件名以 python 开头的目录
3、根据时间日期进行检索
与此对应的是 find 命令中的 -mtime,-atime 和 -ctime 三个选项。
这三个选项的使用遵循以下示例中的规则:
- -mtime 2:该文件 2 天前被修改过
- -mtime -2:该文件 2 天以内被修改过
- -mtime +2:该文件距离上次修改已经超过 2 天时间
find /usr -type f -mtime 2
检索 /usr 下两天前被修改过的文件
如果觉得 -mtime 等选项以天为单位时间有点长,还可以使用 -mmin,-amin,-cmin 三个选项:
find /usr -type f -mtime +50 -mtime -100
检索 /usr 下 50 到 100 天之前修改过的文件
find /usr -type f -mtime 2 -amin 5
检索 /usr 下两天前被修改过且 5 分钟前又读取过的文件
4、根据大小检索
c:字节
k:Kb
M:Mb
G:Gb
find / -size +1G
检索文件大小高于 1 GB 的文件
5、其它
find ~ -type d -empty
检索用户主目录下所有的空目录
find /usr -type f ! -name '*.txt'
检索 /usr 下所有文件名不以 .txt 为后缀的文件
find / -type f -user dayu
检索根目录下所有属主为 dayu 的文件
find /usr -perm u=rwx,g=rx,o=rx
检索 /usr 目录下权限为 rwxr-xr-x 的文件
find / -maxdepth 3
搜索时向下递归的层数最大为 3
对搜索结果执行命令
find ~ -type d -empty -delete
删除 home 目录下所有的空目录
find ~ -type f -name '*.mp3' -exec cp {} /dayu ';'
将 home 目录下所有的 MP3 音频文件复制到指定目录
其中的大括号({})作为检索到的文件的 占位符 ,而分号( ;)作为命令结束的标志。因为分号是 Shell 中有特殊含义的符号,所以需要使用单引号括起来。
每当 find 命令检索到一个符合条件的文件,会使用其完整路径取代命令中的 {},然后执行 -exec 后面的命令一次。
find ~ -type f -name '*.mp3' -exec tar -czvf music.tar.gz {} ';'
将用户主目录下所有的 MP3 文件添加到压缩包 music.tar.gz 中
find ~ -type f -name '*.mp3' -exec tar -czvf music.tar.gz {} +
+符号,先让 find 命令检索出所有符合条件的音频文件,再将得到的文件列表传递给后面的压缩命令。
find / -type file -size +1G -ls
浏览所有 1G 以上大小的文件的详细信息
网友评论