【shell】find命令及常见用法

【背景】

find是linux中最实用的工具之一,用于搜索符合一定条件的文件。其工作方式为沿着目录树向下遍历,匹配符合条件的文件,执行相应的操作。


【命令形式】

find [path] [option] [action]

path:指定开始查找的路径

option:指定选项,一般是设定查找的条件

action:指定动作,默认为print


【常见用法】

1.根据文件名进行搜索

涉及选项:

(1) -name:设定需要查找的文件名

(2)-iname:同上,但是不区分大小写

例子:

在当前目录下搜索所有doc文件:

find ./ -name "*.doc" c++

2.根据文件类型进行搜索

涉及选项:

(1)-type:设定文件类型

文件类型:

(1)f:普通文件

(2)l:符号链接

(3)d:目录

(4)c:字符设备

(5)b:块设备

(6)s:套接字

(7)p:FIFO

例子:

在当前目录下搜索所有普通文件:

find ./ -type f

3.根据文件大小进行搜索:

涉及选项:

(1)-size [+-]s:设定文件大小限制,+/-分别代表大于/小于s

例子:

在当前目录下找到大小为100k的文件:

find ./ -size 100k

4.根据文件时间进行搜索

涉及选项:

(1)-[x]time [+-]n:x可选a/m/c,分别代表访问时间/修改时间/属性修改时间;+/-分别代表n天之前/之内。

(2)-[x]min [+-]n:同上,但时间单位换成分钟。

例子:

在当前目录下找到24小时之内改动过的文件:

find ./ -mtime 0

5.根据文件权限进行搜索

涉及选项:

(1)-perm [+-]p:设定权限限制,+/-分别代表文件需要完全包含/包含任一所设权限

例子:

在当前目录下找到含有SBIT权限的文件:

find ./ -perm +4000

【更多用法】

6.删除匹配文件

涉及选项:

(1)-delete

之前的例子都没有使用可选的action,这是利用了默认是-print。如果需要将符合条件的文件删除,则使用-delete作为action部分。

例子:

删除当前目录下所有的doc文件:

find ./ -name "*.doc" -delete

7.执行命令

涉及选项:

(1)-exec cmd:cmd可以替换成需要执行的命令。

例子:

将5天之前的log文件删除:

find ./ -mtime +5 -name "*.log" -exec rm -f {} \;

8.限定目录深度

涉及选项:

(1)-maxdepth:限制最大深度

(2)-mindepth:限制最小深度

例子:

只在当前目录搜索doc文件:

find ./ -maxdepth 1 -name "*.doc"

9.否定

可以使用!来将参数的含义取反。

例子:

将当前目录下的非doc文件列出:

find ./ ! -name "*.doc"

10.设定多条件

涉及选项:

(1)-a:表示多个条件之间的与关系

(2)-o:表示多个条件之间的或关系

例子:

搜索doc文件或者docx文件:

find ./ \( -name "*.doc" -o -name "*.docx" \)

11.搜索时跳过特定目录

涉及选项:

(1)-prune:设定需要排除的文件(prune本身为精简的含义)

例子:

递归打印当前目录下所有文件,但不包括名为.git的文件:

find ./ \( -name ".git" -prune \) -o \( -type f -print \)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值