Linux命令学习——find命令

find命令

根据文件和目录名称查找

-name \ -iname选项为根据文件或目录名称查找文件。前者是大小写敏感,后者是忽略大小写。
例如查询当前目录以及子目录下console开头的文件或目录。

[lsms@DataTest6 log]$ find ./ -name "console*"
./console
./bak/console.log.gz
./bak/console.log.20190709
./bak/console.log
./console.log

根据文件的绝对路径查找

-path \ ipath表示根据文件的绝对路径查找(即路径+文件名)。比如说在当前路径下,查找匹配".bak/console*" 的路径,并且在过滤出后缀是.gz的文件。ipath表示忽略大小写。

[lsms@DataTest6 log]$ find ./ -path "./bak/console*"
./bak/console.log.gz
./bak/console.log.20190709
./bak/console.log

根据文件类型查找

-type表示根据指定的文件类型查询。其中-type的取值为:
d: 目录
c: 字型装置文件
b: 区块装置文件
p: 具名贮列
f: 一般文件
l: 符号连结
s: 套接字文件
例如查找当前目录下的目录:

[lsms@DataTest6 log]$ find ./ -type d
./
./console
./bak

根据文件大小查找

-size表示根据文件大小查找文件。取值为[+-]n[cwbkMG],其中±表示大于等于和小于等于,n为数字,数字后边不加任何值则默认为b,方括号内为计量单位,[cwbkMG]含义为:
b:for 512-byte blocks (this is the default if no suffix is used)
c:for bytes,即字节。
w:for two-byte words
k:for Kilobytes (units of 1024 bytes),即Kb。
M:for Megabytes (units of 1048576 bytes),即Mb。
G:for Gigabytes (units of 1073741824 bytes),即Gb。
例如查找当面目录下大于等于100k的文件。

[lsms@DataTest6 log]$ find ./ -size +100k
./LsmsSvc01.log
./LsmsSvc01_2019-08-15.log
./LsmsSvc01_2019-07-29.log
./bak/LsmsSvc01.log
./bak/console.log.gz
./bak/console.log.20190709
./bak/console.log
./console.log

查找空目录或文件

find ./ -empty此命令为查询空目录或文件。

根据文件内容最后访问时间查找

-a[min|time]+|-n表示根据文件内容访问时间查找文件。其中min表示分钟,time表示天;+n表示多少天之前,-n表示多少天之内。

根据文件内容最后修改时间查找

-m[min|time]+|-n表示根据文件内容最后修改时间查找文件。其中min表示分钟,time表示天;+n表示多少天之前,-n表示多少天之内。

根据文件状态最后修改时间查找

这里要特别说明一下文件状态指的是文件本身,即文件属性(权限、所属组、位置、大小等等)最后被变更的时间,变更动作可以使用chmod、chgrp、mv等等。
-c[min|time]+|-n表示根据文件内容访问时间查找文件。其中min表示分钟,time表示天;+n表示多少天之前,-n表示多少天之内。
注意:可以使用stat file命令来查看文件的文件访问时间,内容修改时间和属性修改时间。

根据目录曾经查找文件

--maxdepth LEVELS:最大目录层级
--mindepth LEVELS:最小目录层级
例如:
查询以"z"开头文件和目录在第二层目录中。
find -maxdepth 2 -name "z*"
查询以"z"开头文件和目录在第二和第四层目录中。
find -mindepth 2 -maxdepth 4 -name "z*"

逻辑运算符

逻辑运算符主要有以下几个,按照优先级从高到低的顺序如下:
(expr):括号优先级最高,首先对括号内的求值
!expr:对expr表达式的值取反。-not expr含义相同。
expr1 expr2:不加任何运算符,相当于两个之间加and,即与运算。expr1 -a expr2、expr1 -and expr2含义相同。
expr1 -o expr2:表示对expr1和expr2两个表达式的值求或,expr1 -or expr2含义相同。
expr1,expr2

示例1:输入log目录下所有非.log的文件。因为是做的or运算,非.log为false,才进行-print的运算。
find ./ -name "*.log" -o -print
示例2:查找log目录文件大于等于500k或以.log结尾的文件。
find ./ -size +500k -or -name "*.log"
示例2:查找log目录下*.log.gz结尾并且大小等于100k的文件。
find ./ \( -name "*.log.gz" \) -and \( -size +100k \)
注意:()需要使用\转移,并且(前后需要有空格,否则会报语法错误。

关于文件的访问时间、内容修改时间和文件属性修改时间的参考资料:
https://www.cnblogs.com/kerrycode/archive/2019/02/27/10441997.html
https://blog.csdn.net/qq_31828515/article/details/62886112

参考资料:
https://www.cnblogs.com/davidwang456/p/3753707.html
https://www.runoob.com/linux/linux-comm-find.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值