find + xargs组合删除文件 (rm) 或移动文件 (mv)
1.删除文件示例 (rm)
假设你要删除 /path/to/dir 下所有 .log 文件:
1 | find /path/to/dir -type f -name "*.log" -print0 | xargs -0 rm -f |
解释:
-type f→ 只匹配文件-name "*.log"→ 匹配.log后缀-print0→ 用 null 字符分隔文件名(防止空格或特殊字符出错)xargs -0→ 配合-print0安全处理文件名rm -f→ 强制删除
⚠️ 小心使用
rm,建议先打印确认:
1 | find /path/to/dir -type f -name "*.log" -print0 | xargs -0 echo rm -f |
2.移动文件示例 (mv)
假设你想把 /path/to/dir 下所有 .txt 文件移动到 /backup/dir:
1 | find /path/to/dir -type f -name "*.txt" -print0 | xargs -0 -I {} mv {} /backup/dir/ |
解释:
-I {}→ 表示将find输出的每个文件替换{}- 每个匹配的文件会执行一次
mv {}到目标目录 - 使用
-print0+xargs -0可安全处理文件名带空格或特殊字符
如果文件很多,也可以用批量移动(一次处理多个文件):
1 | find /path/to/dir -type f -name "*.txt" -exec mv -t /backup/dir/ {} + |
这里 -exec ... {} + 会尽量一次传多个参数给 mv,效率比 xargs 高。