find指令详解

  • 摘要:Linuxfind命令是所有Linux命令中最有用的一个,它允许按名称、类型、用户、权限、时间等实时查找文件,还能对查找到的文件执行查看、删除、移动等操作。一、find官方手册使用manfind查看linuxfind命令的使用方法如下:NAMEfind--walkafilehierarchySYNOPSISfind[-H|-L|-P][-EXdsx][-fpath]path...[expression]find[-H|-L|-P][-EXdsx]-fpath[path...]

Linux find命令是所有Linux命令中最有用的一个,它允许按名称、类型、用户、权限、时间等实时查找文件,还能对查找到的文件执行查看、删除、移动等操作。

一、find官方手册

使用man find查看linux find命令的使用方法如下:

NAME find -- walk a file hierarchySYNOPSIS find [-H | -L | -P] [-EXdsx] [-f path] path ... [expression] find [-H | -L | -P] [-EXdsx] -f path [path ...] [expression]...

查找当前目录及子目录下素有文件和文件夹

find .

二、按文件名查找

参数描述
-name按文件名查找
-iname按文件名查找(不区分大小写)
-regex按正则条件查找

使用范例如下:

find . -name '*.jpg' -print #按名称查找当前文件夹下的.jpg文件find . -regex '.*/.jpg' #按正则查找当前文件夹下的.jpg文件

注: 
-print:假设find指令的回传值为true,就将文件或目录名称列出到标准输出。格式为每列一个名称,每个名称前皆有“./”字符串; 
-print0:假设find指令的回传值为Ture,就将文件或目录名称列出到标准输出。格式为全部的名称皆在同一行;

三、按文件从属关系查找

find . -user 'Jerry' -print #查找当前目录及子目录下所有用户名为Jerry的文件

其他从属关系

从属符号描述
-user按用户名查询
-group按分组组名查询
-nouser查找没有属主的文件
-nogroup查找没有属组的文件

四、按文件类型查询

find . -type f -print #查找当前目录及子目录下所有的普通文件

find . -type d -print #查找当前目录及子目录下所有的目录

所有可查询的类型如下:

类型功能
f普通文件
d文件夹
b块设备文件
c字符设备文件
l连接文件
s套接字文件
p管道文件

五、按文件大小查找

find . -size 1M -print #精确查找当前目录及子目录下大小为1M的文件/文件夹

find . -size -1M -print #查找当前目录及子目录下小于1M的文件/文件夹

find . -size +1M -print #查找当前目录及子目录下大于1M的文件/文件夹

文件大小单位:

单位符号描述
b块(512字节)
c字节
w字(2字节)
k千字节
M兆字节
G吉字节

六、按时间查找

find . -mtime +1 -print #精确查找当前目录及子目录下一天前修改的文件

find . -mtime -1 -print #精确查找当前目录及子目录下一天内修改的文件

时间选项如下:

时间类型描述
-atime以文件/文件夹访问时间(天)查找
-mtime以文件/文件夹修改时间(天)查找
-ctime以文件/文件夹数据元(如权限等)修改时间(天)查找
-amin以文件/文件夹访问时间(分钟)查找
-mmin以文件/文件夹修改时间(分钟)查找
-cmin以文件/文件夹数据元(如权限等)修改时间(分钟)查找
-newer file以file文件为条件,查找比其新的文件/文件夹
-not -newer file以file文件为条件,查找比其老的文件/文件夹

七、按权限查找

find . -perm 644 -print #精确查找当前目录及子目录下ugo权限为644的文件/文件夹find . -perm +111 -print

#精确查找当前目录及子目录下ugo用户中任意一类(或)有可执行权限的文件/文件夹find . -perm -111 -print

#精确查找当前目录及子目录下ugo用户都拥有(与)可执行权限的文件/文件夹

注:文件有owner(user)、group、others三种身份,分别用u、g、o表示,用a同时代表三种身份,用r、w、x代表读、写、执行三种权限,每种身份的权限按rwx顺序用一个8进制数表示,如777表示同时拥有读、写和可执行权限。

八、组合条件查询

find . -name '*.gif' -a -perm 644 #查找当前目录及子目录下格式为gif且权限为644的文件/文件夹

find . -name '*.gif' -o -name '*.jpg' #查找当前目录及子目录下格式为gif或jpg的文件/文件夹

find . -not -name '*.gif' #查找当前目录及子目录下格式不为gif的文件/文件夹

find . -name '*.jpg' -o /( -name '*.txt' -a -empty /) #带括号的复杂查询, 查询jpg文件或空txt文件

组合符号

组合符号描述
-a与,默认组合条件
-o
-not (!)

九、查询结果处理

find . -name '*.txt' -exec grep 'test' {} /; #查找当前目录及子目录下txt文件并查找文件中包含test的行

查询结果处理动作:

处理操作描述
-print输出到标准输出,默认操作
-ls以ls长文件形式输出到标准输出,默认操作
-delete删除查找到的文件/文件夹
-fls /path/filename以ls长文件形式存储到file中
-ok COMMAND {} /;将查找到的文件传递给COMMAND命令,有提示
-exec COMMAND {} /;将查找到的文件传递给COMMAND命令,无提示

十、其他查找

find . -empty -print #查找当前目录及子目录下的空文件/文件夹find . -empty -maxdepth 2

#查找当前目录及子目录下的空文件/文件夹, 且查找目录层级至多2级

find . -empty -mindepth 1 #查找当前目录及子目录下的空文件/文件夹, 且查找目录层级至少1级。

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
`find` 命令是在 Linux 系统中查找文件和目录的常用工具之一,它可以递归查找指定目录下符合条件的文件和目录。下面是 `find` 命令的详细用法说明: ```bash find [path] [expression] ``` 其中,`path` 是指查找的目录路径,可以是绝对路径或相对路径。如果未指定 `path`,则默认为当前目录。 `expression` 是一个或多个由操作符和参数组成的表达式,用于指定查找条件和操作。下面是一些常用的操作符和参数: - `-name pattern`:查找文件名匹配 `pattern` 的文件,例如 `find /path -name "*.txt"` 将查找 `/path` 目录及其子目录下所有扩展名为 `.txt` 的文件。 - `-type type`:查找指定类型的文件,`type` 可以是以下之一:`f` 表示普通文件,`d` 表示目录,`l` 表示符号链接,`c` 表示字符设备,`b` 表示块设备,`p` 表示管道,`s` 表示套接字。 - `-mtime n`:查找最后修改时间在 `n` 天前的文件,例如 `find /path -mtime +7` 将查找 `/path` 目录及其子目录下最后修改时间在 7 天前的文件。 - `-size n`:查找文件大小为 `n` 块的文件,例如 `find /path -size +100M` 将查找 `/path` 目录及其子目录下文件大小大于 100 MB 的文件。 - `-exec command {} \;`:对查找到的文件执行指定命令,例如 `find /path -name "*.txt" -exec cat {} \;` 将查找 `/path` 目录及其子目录下所有扩展名为 `.txt` 的文件,并输出文件内容。 这些参数可以组合使用,例如 `find /path -type f -name "*.txt" -mtime +7 -exec rm {} \;` 将查找 `/path` 目录及其子目录下最后修改时间在 7 天前的扩展名为 `.txt` 的文件,并删除它们。 除了这些参数外,`find` 命令还支持一些高级用法,例如 `-maxdepth`、`-mindepth`、`-prune`、`-print` 等,您可以通过 `man find` 命令查看更多用法和示例。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值