在 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


评论区