find 命令是用来在指定目录下查找文件,用法太多,就列几个常用的
1、根据文件或者正则表达式进行匹配
列出当前目录及子目录下所有的文件和文件夹
这时候使用 tree -a 更直观
在/home 目录下查找以.txt结尾的文件名
若要忽略大小写使用 find /home -iname "*.txt"
查找所有以.txt和.pdf结尾的文件
-name<范本样式>:指定字符串作为寻找文件或目录的范本样式
其中 -o 是或的意思
类似的还有:-a 且 , -not 不满足
匹配文件路径或者文件
-path<范本样式>:指定字符串作为寻找目录的范本样式
基于正则表达式匹配文件路径
-regex<范本样式>:指定字符串作为寻找文件或目录的范本样式
忽略大小写:find . -iregex ".*\(\.txt\|\.pdf\)$"
2、否定参数
使用 ! 参数
3、根据文件类型进行搜索
find . -type 类型参数
类型参数包括:f 普通文件 ,l 符号连接, d 目录, c 字符设备, b 块设备 ,s 套接字, p Fifo
搜索符号连接
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为小写
7、删除匹配文件
删除当前目录下所有小于10k的a2.txt文件
8、根据文件权限进行匹配
-perm<权限数值>:查找符合指定的权限数值的文件或目录
找出当前目录下权限为644的文件
找出当前目录用户susu拥有的所有文件
找出当前目录用户组susu拥有的所有文件
9、借助-exec 选项与其他命令结合使用
-exec<执行指令>:假设find指令的回传值为True,就执行该指令
找出当前目录下a.txt文件,并把所有权更改为用户susu
其中,{}用于与-exec选项结合使用来匹配所有文件
10、搜索但跳过指定的目录
-prune:不寻找字符串作为寻找文件或目录的范本样式
跳过 root 目录查找 *local* 文件
11、其他
列出所有长度为零的文件