find命令的用法

find 命令是用来在指定目录下查找文件,用法太多,就列几个常用的

1、根据文件或者正则表达式进行匹配

列出当前目录及子目录下所有的文件和文件夹

find命令的用法_第1张图片

这时候使用 tree -a 更直观

在/home 目录下查找以.txt结尾的文件名

find命令的用法_第2张图片

若要忽略大小写使用 find /home -iname "*.txt"

查找所有以.txt和.pdf结尾的文件

-name<范本样式>:指定字符串作为寻找文件或目录的范本样式

find命令的用法_第3张图片

其中 -o 是或的意思

类似的还有:-a 且  ,  -not 不满足

匹配文件路径或者文件

-path<范本样式>:指定字符串作为寻找目录的范本样式

find命令的用法_第4张图片

基于正则表达式匹配文件路径

-regex<范本样式>:指定字符串作为寻找文件或目录的范本样式

find命令的用法_第5张图片

忽略大小写:find . -iregex ".*\(\.txt\|\.pdf\)$"

2、否定参数

使用 ! 参数

find命令的用法_第6张图片

3、根据文件类型进行搜索

find . -type 类型参数

类型参数包括:f 普通文件 ,l 符号连接, d 目录, c 字符设备, b 块设备 ,s 套接字, p Fifo

搜索符号连接

find命令的用法_第7张图片

4、基于目录深度搜索

-maxdepth<目录层级>:设置最大目录层级;

 -mindepth<目录层级>:设置最小目录层级;

搜索出最大目录层级为3的所有txt文件

5、根据文件时间戳进行搜索

UNIX/Linux文件系统每个文件都有三种时间戳: 

访问时间(-atime/天,-amin/分钟):用户最近一次访问时间。 

修改时间(-mtime/天,-mmin/分钟):文件最后一次修改时间。 

变化时间(-ctime/天,-cmin/分钟):文件数据元(例如权限等)最后一次修改时间。

七天内    -atime -7

刚好在前七天   -atime 7

超过七天内   -atime +7

找出访问时间超过10分钟的所有文件

找出比a.txt 修改时间更新的所有文件

6、根据文件大小进行匹配

find . -type f -size 文件大小单元

文件大小单元:

b -- 块(512字节), c --字节 ,w --字(2字节) ,k --千字节, M -- 兆字节 ,G -- 吉字节

搜索小于10KB的文件,注意k为小写 

find命令的用法_第8张图片

7、删除匹配文件

删除当前目录下所有小于10k的a2.txt文件

8、根据文件权限进行匹配

-perm<权限数值>:查找符合指定的权限数值的文件或目录

找出当前目录下权限为644的文件

find命令的用法_第9张图片

找出当前目录用户susu拥有的所有文件

find命令的用法_第10张图片

找出当前目录用户组susu拥有的所有文件

9、借助-exec 选项与其他命令结合使用

-exec<执行指令>:假设find指令的回传值为True,就执行该指令

找出当前目录下a.txt文件,并把所有权更改为用户susu

find命令的用法_第11张图片

其中,{}用于与-exec选项结合使用来匹配所有文件

10、搜索但跳过指定的目录

-prune:不寻找字符串作为寻找文件或目录的范本样式

跳过 root 目录查找 *local* 文件

find命令的用法_第12张图片

11、其他

列出所有长度为零的文件

find命令的用法_第13张图片



参考:man.linuxde.net/find

你可能感兴趣的:(find命令的用法)