侧边栏壁纸
博主头像
liveJQ博主等级

沒有乐趣,何来开始

  • 累计撰写 195 篇文章
  • 累计创建 70 个标签
  • 累计收到 7 条评论

find 命令的进阶用法

liveJQ
2024-10-11 / 0 评论 / 0 点赞 / 1 阅读 / 985 字

在 Linux 中,使用 find 命令可以查找文件和目录,并且可以通过一些选项输出文本信息。以下是一些常用的示例:

查找特定类型的文件并输出文件名

find /path/to/search -type f -name "*.txt"

例如:查找当前目录下以 .jpg 和 .png 结尾的文件并将其删除。(可以先查找,确认无误后再添加后面的 -delete 删除命令,前面加 -print 可以输出删除的内容)

 find . -type f \( -iname "*.jpg" -o -iname "*.png" \) -print -delete

等价于

 find . -type f \( -iname "*.jpg" -o -iname "*.png" \) -exec rm -v {} \;

这里的 -iname 与 -name 的区别是,前者含 ignore 指的是不区分大小写,这里意思是可以匹配 .jpg 或 .Jpg 或 .JPG 等等。

至于区别,-delete 是 find 内置的删除功能,性能较好但不是所有 find 版本都支持;-exec rm -f {} ;是通过调用外部 rm 命令删除,性能较差,每找到一个文件就执行一次删除操作,删除大量文件时可以换成 -exec rm -f {} + 命令,这会一次传递多个文件给 rm 进行删除。优点是交互性较好,可以替换成其它 mv/cp/chmod 等命令。

查找并输出包含特定文本的文件

find /path/to/search -type f -exec grep -l "特定文本" {} +

查找修改时间在过去 7 天内的文件并输出详细信息

find /path/to/search -type f -mtime -7 -ls

查找特定大小的文件并输出文件信息

find /path/to/search -type f -size +1M -exec ls -lh {} +

输出所有文件的路径

find /path/to/search -type f -print

输出文件路径和大小

find /path/to/search -type f -exec du -h {} +

查找并输出硬链接文件

主要用在只知道当前这个文件存在硬链接,却不知道硬链接文件具体在哪里的情况,可以先查看当前这个文件的 inode ID信息。

ls -i 你的文件路径

或者直接

stat 你的文件路径
find /path/to/search -inum 你的inode_id
0

评论区