使用bash删除带空格的目录

时间:2009-01-08 01:58:30

标签: bash find

我正在使用以下命令删除名为“Test Folder”的文件夹中的每个“.dummy”目录:

rm -rf `find "Test Folder" -type d -name .dummy`

然而,这不起作用,因为它扩展到,比如说:

rm -rf Test Folder/.dummy

由于空格未被转义,因此失败。

我也试过这样的事情:

find "Test Folder" -type d -name .dummy -exec rm -rf {} \;

它有效,但它会产生一个令人讨厌的错误:

find: Test Folder/.dummy: No such file or directory

有没有办法让任何一种解决方案成功?

3 个答案:

答案 0 :(得分:9)

有几件事。最简单的是改变和使用

$ find 'Test Folder' -type d -print0 | xargs -0 rm -rf

另一个选择是

$ find 'Test Folder' -type d -exec \'{}\' \;

答案 1 :(得分:2)

尝试

find "Test Folder" -type d -name .dummy -exec rm -rf \"{}\" \;

请注意rm -rf "{}" arg中-exec选项中的额外引号。它们是必需的,因为名称Test Folder/.dummy中有一个空格。所以你需要报价。

答案 2 :(得分:1)

找到“测试文件夹”-type d -name'.dummy'-delete