Linux find命令

参考资料

  1. 菜鸟教程-Linux find 命令
  2. Linux 中使用 find 命令查找文件
  3. linux find命令详解 💪
  4. findコマンドの使い方を簡単に理解するための7つのルール+実践的な知識


一. 基本语法

find 指定目录 寻找条件 查完后执行的动作

1.1 配置项

配置项(简写)说明
-name按照文件名查找文件,不忽略大小写
-iname按照文件名查找文件,忽略大小写
-type按照文件类型查找文件
-size按照文件大小查找
-perm按照权限查找
-user按照用户名查找

-type配置项的描述符

  • d:文件夹
  • f:普通文件
  • l:链接文件

-size配置项的描述符

  • c:字节
  • k:KB
  • M:MB
  • G:GB

1.2 常用动作

动作说明
-exec 命令体 {} ;对符合条件的文件执行所给的Linux 命令,而不询问用户是否需要执行该命令
命令的末尾必须以\;结束
-ls详细列出所找到的所有文件
-print在标准输出设备上显示查找出的文件名
xrags

二. -name 按照文件名查找

2.1 按照文件名正则表达式查找

⏹当查找后缀名为.sh的文件时,需要使用双引号包裹,否则查询无效

# 在当前目录的 jmw_work_space 文件夹下查找 后缀为 .sh 的文件
find ./jmw_work_space/ -name "*.sh"
find ./jmw_work_space/ -name *.zip

在这里插入图片描述
⏹指定正则表达式

find ./jmw_work_space/ -name "20240[0-9]*.txt"

在这里插入图片描述

2.2 逻辑运算符

2.2.1 与 查找

⏹查找文件名后缀为.sh 并且 所属用户为 root 的文件

find ./jmw_work_space/ -name "*.sh" -user root

在这里插入图片描述

2.2.2 或 查找

⏹查找后缀名为.sh的文件 文件名包含out的zip文件

  • -o:表示或
find ./jmw_work_space/ -name "*.sh" -o -name "out*.zip"

在这里插入图片描述

2.2.3 非 查找

⏹查找指定目录下 名称不包含address的文件,因为还使用了-type f,所以不会匹配到文件夹

  • !:取反
find ./jmw_work_space/20240127 ! -name "address*.txt" -type f

在这里插入图片描述


三. -type 按照类型查找

3.1 查找文件夹路径

  • d:表示查找文件夹
# 查找指定目录下的指定文件夹路径
find ./jmw_work_space/ -name "2024*" -type d

在这里插入图片描述

3.2 查找文件路径

  • f:表示查找文件,而不是文件夹
find ./jmw_work_space/ -name "2024*" -type f

在这里插入图片描述


四. -size 按照文件大小查找

4.1 查找等于指定大小的文件/目录

  • -size 0k:查找大小为0k的文件/目录
find ./jmw_work_space/ -size 0k -ls

在这里插入图片描述

4.2 查找大于指定大小的文件/目录

  • -size +2M:查找 > 2M 的文件/目录
find ./jmw_work_space/ -size +2M | xargs ls -l

在这里插入图片描述

4.3 查找小于指定大小的文件/目录

  • -size -2k:查找 < 2k 的文件/目录
find ./jmw_work_space/ -size -2k

在这里插入图片描述

4.4 查找大小在指定范围之内的文件

  • -size +2k -size -10M:2k < 大小 < 10M
  • 这样会查询出文件夹
find ./jmw_work_space/ -size +2k -size -10M

在这里插入图片描述

⏹加上-type f,限定只查询文件

find ./jmw_work_space/ -size +2k -size -10M -type f

在这里插入图片描述

⏹查询指定大小的文件,并且限定文件名

find ./jmw_work_space/ -size +2k -size -10M -name "*.png"

在这里插入图片描述


五. 组合命令实例

5.1 只查找当前目录,不查找子目录中的指定文件

  • -maxdepth :指定查找目录的深度
# 只查找当前目录,不查找其子目录
find ./ -maxdepth 1 -type f -name "*.txt"
# 查找当前目录和其第1层的子目录
find ./ -maxdepth 2 -type f -name "*.txt"

在这里插入图片描述

5.2 查找到的文件批量复制到指定文件夹中

  • 将work目录下后缀为dat的文件批量复制到temp文件夹中
  • -exec 选项执行 cp 命令来复制文件
  • {} 是一个占位符,会被实际找到的文件名替代
  • \; 表示 -exec 选项的结束
find ./work/ -name "*.dat" -exec cp {} /home/fengyehong/jmw_work_space/temp \;

在这里插入图片描述

5.3 查找到的文件批量修改所属用户和组

find ./ -maxdepth 1 -type f -user root -exec chown fengyehong:fengyehong {} \;

在这里插入图片描述

5.4 查找到的文件批量添加执行权限

find ./ -maxdepth 1 -name "*.sh" | xargs chmod u+x

在这里插入图片描述

5.5 查找到的文件内容全部导入指定文件

find /home/ -type f -name "*.txt" -exec cat {} \; > all.txt

在这里插入图片描述

5.6 查找指定目录下指定用户所属的文件

  • -user root:文件所属用户为root
  • -name "*.sh":文件名后缀为sh
find ./ -user root -name "*.sh"

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值