我正在尝试编写一个bash命令来删除与特定模式匹配的所有文件 - 在这种情况下,它是所有已构建的旧vmware日志文件。
我试过这个命令:
find . -name vmware-*.log | xargs rm
但是,当我运行该命令时,它会阻塞名称中包含空格的所有文件夹。有没有办法格式化文件路径,以便xargs将其传递给rm引用或正确转义?
答案 0 :(得分:24)
尝试使用:
find . -name vmware-*.log -print0 | xargs -0 rm
这会导致find在每个文件名后输出一个空字符,并告诉xargs根据空字符而不是空格或其他标记来分解名称。
答案 1 :(得分:9)
不要使用xargs。查找可以在没有任何帮助的情况下完成:
find . -name "vmware-*.log" -exec rm '{}' \;
答案 2 :(得分:5)
查看-0
的{{1}}标记;结合xargs
的{{1}}你应该设置。
find
答案 3 :(得分:4)
GNU find
find . -name vmware-*.log -delete
答案 4 :(得分:1)
find . -name vmware-*.log | xargs -i rm -rf {}
答案 5 :(得分:0)
find -iname pattern
使用-iname
进行模式搜索
答案 6 :(得分:0)
为了避免xargs中出现空间问题,我使用新行字符作为带-d选项的分隔符:
find . -name vmware-*.log | xargs -d '\n' rm