Linux 文件查找命令find

语法

Linux find命令用来在指定目录下查找文件。find命令的语法如下:

path 指定查找的路径

任何位于参数之前的字符串都将被视为欲查找的目录名

path默认为当前路径,expression默认为-print,即显示所有结果到标准输出

-exec command {} \; 将查到的文件执行command操作,注意要有空格

-ok 和-exec相同,只不过在操作前要询用户

查询路径

path选项表示查询的起始路径,可以查找path下面的子路径。默认为当前路径。

需要注意:需要对查询的路径永远访问权限才可以查询,遇到没有权限访问的文件时会自动跳过

参考下面的实例

基于文件属性搜索

find命令提供了丰富的文件属性查找选项,比如指定文件类型,文件修改时间,文件大小等。

根据文件名正则进行搜索

最基本的,find命令提供能基于文件名的正则表达式的搜索:

其中可用的选项的含义如下:

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

-iname效果和-name一样但是忽略字符大小写

-lname指定字符串作为寻找符号连接的范本样式

-ilname效果和-lname一样但是忽略字符大小写

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

-ipath效果和-path一样但是忽略字符大小写

-regex指定基于正则表达式匹配,需要注意正则表达式中特殊字符的转义

-iregex效果和-regex一样但是忽略字符大小写

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

常用的文本匹配选项有:

*表示通配符匹配,如”*Controller.php”

{1,3}表示匹配1或者3

[0-10]表示匹配0到10的数值

根据文件类型进行搜索

find命令可以根据文件类型来进行查找:

参数类型列表含义如下:

f 普通文件

l 符号连接

d 目录

c 字符设备

b 块设备

s 套接字

p Fifo

根据文件大小进行匹配

find命令可以根据大小进行查找:

+- 表示大于还是小于,值可为:

-表示小于指定大小

+表示大于指定大小

空值不填表示等于指定大小

n 表示数值,如100等

u 表示单位,可为:

b 块(512字节)

c 字节

w 字(2字节)

k 千字节

M 兆字节

G 吉字节

根据文件权限进行匹配

find命令可以根据文件权限和所有者进行查找:

其中各项选项含义如下:

-perm表示指定权限值,此时value可为如777的权限代码

-user表示指定用户,此时value为用户名

-group表示指定用户组,此时value为用户组名

-group表示指定用户组,此时value为用户组名

-nouser表示不属于本地主机用户

-nogruop表示不属于本地主机用户组

根据文件时间戳进行查找

find命令提供了基于诸如访问时间等时间戳来搜索文件:

其中各个可选选项的含义如下:

-atime用户最近一次访问时间,按照天算

-amin用户最近一次访问时间,按照分钟算

-mtime文件最后一次修改时间,按照天算

-mmin文件最后一次修改时间,按照分钟算

-ctime文件数据元(例如权限等)最后一次修改时间,按照天算

-atime文件数据元(例如权限等)最后一次修改时间,按照分钟算

-newer表示更改时间较指定文件或目录的更改时间更接近现在

指定搜索结果行为

find命令还可以对查找的文件进行诸如删除等操作。

对查询到的文件进行删除

可以使用-delete选项来对查询到的文件删除:

对查询结果执行简单命令

可以使用-exec和-ok来对查询结果执行简单命令,-ok和-exec效果一样,只不过-ok会给出询问提示是否要执行想要操作。

需要注意,这些命令的格式,结尾为命令加上空格加上大括号加上空格加上反斜杠,最后的空格加反斜杠一定不能少,否则会报缺少参数的错误。

看下面的例子:

如果想要对查询结果执行复杂的命令,可以预先把多个命令写入到.sh文件中,然后调用这个.sh文件

其他的一些选项

指定查找深度

可以用-depth从指定目录下最深层的子目录开始查找。

Logo

更多推荐