linux find查找深度,linux find 用法

find命令用来查找文件(在当前目录以及当前目录的子目录下查找),该命令能够基于正则表达式、目录树深度、文件日期、文件类型等条件查找文件。

一、根据文件名或正则表达式搜索文件

根据名称搜索

用法1: find path -name 'filename'

用法2: find path -iname 'filename'

两种用法都支持通配符,其中,用法1区分大小写, 用法2不区分大小写。实例:查找当前目录下以.sh结尾的文件,命令如下:

find . -name '*.sh'

使用逻辑操作符,按多个条件搜索。-a 和 -and 为逻辑与, -o 和 -or 为逻辑或。

实例:找出当前目录下以.sh结尾并且文件名中含有test的文件,命令如下:

find . -name '.sh' -a -name 'test*'

使用正则表达式

-regex 选项可以根据正则匹配文件,也可使用-iregex不区分大小写。 实例:查找当前目录下以.sh或.sample结尾的文件,命令如下:

find . -regex '.*.sh∥sample
$'

拓展:如何查找文件名不包含某个字符的文件

例:查找文件名中不包含test且以.sh结尾的文件,命令如下:

find . -name '.sh' -a ! -name 'test'

例:查找除了.git目录以外,以.sh结尾的文件

find . -name '.git' -prune -o -name '.sh'

二、根据路径搜索

-path可以限制匹配文件的路径以及名称。

实例:查找test目录下,以.sh结尾的文件

find . -name '.sh' -path '/test/*'

三、根据目录深度搜索

-maxdepth 和 -mindepth选项可以限制find命令遍历的目录深度。

实例:只在当前目录下查找.sh结尾的文件,命令如下:

find . -maxdepth 1 -name '*.sh'

四、根据文件类型搜索

类UNIX系统中,文件类型包括普通文件、目录、字符设备、符号链接、套接字等。find命令通过-type属性对文件类型进行过滤。

例:查找当前目录下所有的目录,包括下一级子目录,命令如下,

find . -maxdepth 2 -type d

-type选项支持的参数对应的文件类型如下:

文件类型
参数值 普通文件

f 符号链接
l 目录
d 字符设备
c 块设备
b 套接字
s FIFO
p

五、根据文件的时间戳搜索

类unix系统中每个文件都有三种时间戳

访问时间(-atime、-amin):用户最近一次访问文件的时间。

修改时间(-mtime、-mmin):文件最后一次被修改的时间。

元数据更改时间(-ctime、-cmin) :文件权限、所有权等最后一次被修改的时间。

time结尾的选项,其单位为天,min结尾的选项其单位为分钟,这些选项的值都为一个正负整数, 如+7,表示,7天以前被访问过的文件,-7表示7天以内被访问过的文件,7表示恰好7天前被访问的文件。

例:

1、七分钟以内被修改的文件

find . -mtime -7

2、七天以前被访问过的文件

find . -atime +7

拓展: -newer选项可以比较修改时间

例:找出比test.sh文件的修改时间更近的文件

find . -type f -newer test.sh

六、根据文件大小搜索

大于2k的文件

find -type f -size +2k

小于2k的文件

find -type f -size -2k

等于2k的文件

find -type f -size 2k

支持的单位,除了k之外,还有如下几个

b:块(512字节)

c:字节

w: 字(2个字节)

k:千字节(1024个字节)

M :兆字节(1024k)

G:吉字节(1024M)

七、基于文件权限和所有权搜索

打印权限为644的文件

find -type f -perm 644

打印用户www拥有的文件

find -type f -user www

八、利用find搜索结果执行相应的命令

删除操作

-delete选项可以直接删除搜索到的文件

find . -name 'test2' -delete

调用其他命令

-exec选项可以调用其他命令,对搜索结果执行相应的操作

将所有以.sh结尾的文件都合并到all_shell.txt文件中

find . -type f -name '*.sh' -exec cat {} >all_shell.txt ;

命令中的{},find会将它替换为搜索到的文件名。命令结尾的;,是cat命令的结束符,而不是find命令的结束符,所以需要转义

声明转 https://blog.csdn.net/weixin_31437361/article/details/116970485

posted @ 2025-10-14 16:55  dreamcloud  阅读(34)  评论(0)    收藏  举报