玩转 find 命令

目录

1、基本格式

 1.1、常用的选项

 2、用法

2.1、常见用法示例

2.2、高级用法 

2.2.1、与 其他命令配合使用

2.2.2、使用逻辑运算符组合多个条件


find 是 Linux 中一个非常强大的命令,用于在文件系统中查找文件和目录。它的功能非常丰富,可以通过多种条件来定位文件和目录

1、基本格式

find [路径] [选项] [表达式]
  • 路径:指定查找的起始目录。如果不指定路径,默认为当前目录。
  • 选项:用于控制查找行为,例如 -type、-name 等。
  • 表达式:用于定义查找条件,例如文件名、文件类型、文件大小等。

 1.1、常用的选项

选项说明示例
-name按照名称查找
  • -name test  查找名称为test的文件
  • -iname test  查找名称为test的文件,并且忽视test这个名称的大小写
-type按照类型查找
  • -type f :查找文件类型
  • -type d :查找类型为目录
  • -type l : 查找链接文件
  • -type b : 查找块设备的文件
-size 按照大小查找
  • -size +3M  :查找大于3M的文件
  • -size -3G :查找小于3G的文件
  • -size 3k :查找等于3k的文件

单位有  c 、k 、M 、G

-mtime

-atime

-ctime

按照时间属性
  • -mtime +7  修改时间大于7天
  • -mtime -7  修改时间小于7天
  • -mtime 7  修改时间正好是7天
  • -atime +7 7天前访问的文件
  • -ctime +7 7天前修改的文件

注意:ctime 表示 修改了文件的属主或属组属性

           mtime 表示修改了文件内容。 这两者有区别

-perm按照权限查找

-perm 644 : 查找权限为644的文件或者目录

-fprint把查找的结果写入文件中而不是打印到屏幕-fprint  /root/test.txt   把查找结果写入/root/test.txt文件中
-depth按照深度查找目录或者文件。主要用于限定查找范围的

  • -maxdepth 2 查找范围是 最大深度为当前路径下2层子目录
  • -mindepth 2 查找范围是 最小深度为当前路径下2层子目录

 2、用法

2.1、常见用法示例

  • 按照名字查找

示例1:根目录下查找名称为test1.txt的文件

find / -name test1.txt

示例2:查找根目录下所有以txt结尾的文件

find / -name *.txt

 示例3:查找根目录下所有以txt结尾的文件,并且忽视大小写

find / -iname *.txt

 示例4:将查找结尾为txt文件的结果写入/root/test.txt文件中

find / -iname *.txt -fprint /root/test.txt
  •  根据文件类型查找

 示例1: 查找/etc 目录下所有的文件

find /etc -type f

示例2:查找/usr/local 目录下所有的目录

find /usr/local -type d

示例3:查找/usr/bin 目录下所有的软链接文件

find /usr/bin -type l
  • 按照深度查找

 示例1:查找 /etc 目录及其直接子目录(最多两层深度)中的所有目录

find  /etc -maxdepth 2 -type d
  •  按照文件大小查找

示例1: 在/etc目录下查找超过10M 大小的文件

find  /etc  -size +10M
  • 按照权限查找

示例1:查找/etc 目录下权限为600的文件

find /etc -perm 600

示例2: 查找/usr/local/bin 下排除权限600的文件

find /usr/local/bin ! -perm 600
  • 按照时间查找

 示例1:查找/var/log 目录下最近30天内访问的文件

find /var/log -atime -30 -type f

示例2:查找 /etc 目录下最近30天内元数据(如权限、所有者、链接数等)被修改的文件

find /etc -ctime -30 -type f

示例3:查找 /var/log 目录及其子目录中,最近 30 天内文件内容被修改过的普通文件

find /var/log -mtime -30 -type f

2.2、高级用法 

2.2.1、与 其他命令配合使用

 示例1:查找/var/log 目录下所有修改时间超过 30 天的普通文件,然后删除它们

find /var/log -type f -mtime +30 -exec rm -f {} \;

示例2:查找/var/log目录下 修改时间在30天之内的文件并把它们复制到/tmp目录下

find /var/log -mtime 30 -type f -exec cp {} /tmp \;

示例3: 与ok选项配合使用,在执行操作前会提示用户

find /var/log -mtime 30 -type f -ok rm  \;

2.2.2、使用逻辑运算符组合多个条件

 常见的逻辑运算符

逻辑运算符说明
-a 或者 -and 逻辑与,只有当所有条件满足时,文件或者目录才会被匹配
-o 或者 -or 逻辑或,只要满足其中一个条件,文件或者目录就会被匹配
!或者-not 逻辑非,用于否定一个条件

示例1:使用 -or

查找最近 30 天内被访问过或大小大于 1MB 的文件

find /var/log -type f \( -atime -30 -or -size +1M \)

*注意:为了避免解析错误,建议将 -or 的条件用括号 () 包裹起来

示例2:使用-and

查找 /var/log 目录中,最近 30 天内被访问过并且大小大于 1MB 的普通文件

find /var/log -type f -atime -30 -and -size +1M

示例3:使用 -not 

查找 /var/log 目录中,最近 30 天内被访问过但大小小于 1MB 的普通文件

find /var/log -type f -atime -30 -and -not -size +1M

*注: -not 表示取反 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值