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命令的结束符,所以需要转义。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值