liunx之find查找

1.什么是find

Linux find命令用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。

2.语法

find   path   -option   [   -print ]   [ -exec   -ok   command ]   {} \;

find 根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部份为 path,之后的是 expression。如果 path 是空字串则使用目前路径,如果 expression 是空字串则使用 -print 为预设 expression。

3.常用命令选项

命令操作
-mount, -xdev只检查和指定目录在同一个文件系统下的文件,避免列出其它文件系统中的文件
-amin n在过去 n 分钟内被读取过
-anewer file比文件 file 更晚被读取过的文件
-mtime n指定时间曾被更改过的文件或目录,单位以24小时计算
-mmin指定时间曾被更改过的文件或目录,单位以分钟计算
-atime n在过去n天内被读取过的文件
-cmin n :在过去 n 分钟内被修改过
-cnewer file比文件 file 更新的文件
-ctime n在过去n天内被修改过的文件
-empty寻找文件大小为0 Byte的文件,或目录下没有任何子目录或文件的空目录
-ipath p, -path p路径名称符合 p 的文件,ipath 会忽略大小写
-name name, -iname name文件名称符合 name 的文件。iname 会忽略大小写
-size n根据文件大小进行查询
-type c根据文件类型进行查找文件类型是c的文件
-pid nprocess id 是 n 的文件
-maxdepth n设置最大目录层级
-mindepth设置最小目录层级
-perm根据权限查找
-user根据用户进行查找
-path指定字符串作为目录进行查找
-ipath指定字符串作为目录进行查找,忽略大小写
-prune不寻找字符串作为查找文件或目录的条件

文件类型参数表

类型参数作用
f普通文件
d目录/文件夹
l符号连接
c字符设备
b块设备
s套接字
pFifo

文件大小参数表

类型参数单位
b块(512字节)
c字节
w字(2字节)
k千字节
M兆字节
G吉字节

4.示例

(1)在/home目录下查找以.txt结尾的文件名

find /home/ -name "*.txt"

(2)查找/home/下名称中带有passwd的文件

find /home/ -name passwd

(3)在/home目录下查找以.txt结尾的文件名(忽略大小写)

find /home/ -iname "*.txt"

(4)当前目录及子目录下查找所有以.txt.pdf结尾的文件

find . -name "*.txt" -o -name "*.pdf" 

(5)根据正则表达式匹配文件路径

find . -regex  正则表达式

(6)找出当前目录下不是以.txt结尾的文件

find .  ! -name "*.txt"

(7)向下1级目录查找命名包含“o”的文件/文件夹

find . -maxdepth 1 -name "*o*"

(8)查找距离当前目录至少2个子目录的所有文件

find . -mindepth 2 -type f

(9)当前目录下最近3天内被访问过的所有文件

find . -type f -atime -3

(10)当前目录下恰好在3天前被访问过的所有文件/文件夹

find .  -atime 3

(11)当前目录下超过3天被访问过的所有文件

find . -type f -atime +3

(12)找出比test.txt修改时间更长的所有文件

find . -type f -newer test.txt

(13)查找大于10M(MB)的文件

find . -type f -size +10M

(14)在当前目录下查找空文件/目录

find . -empty

(15)查找当前目录下所有空文件和空目录并删除

find . -name "*" -type f -size 0c | xargs -n 1 rm -f

(16)批量删除搜索到的文件

find . -name "shuaige.txt" |xargs rm -rf

(17)当前目录下搜索出权限为777的文件

find . -type f -perm 777

(18)找出当前目录下权限不是777的txt文件

find . -type f -name "*.txt" ! -perm 777

(19)查找当前目录或者子目录下所有.txt文件,但是跳过子目录/user

find . -path "./user" -prune -o -name "*.txt" -print

(20) 移动当前目录下非 .txt 结尾的所有文件到opt目录下

find  .  -maxdepth 1 !  -name "*.txt"  -exec mv {}  /opt \;

最后:有什么不对的地方欢迎各位大神给我留言,本人会及时改正.

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值