使用bash删除带有空格的目录

使用bash删除带有空格的目录,bash,find,Bash,Find,我正在使用以下命令删除名为“Test folder”的文件夹中的每个“.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 它可以工作,但会出现如下恼人的错

我正在使用以下命令删除名为“Test folder”的文件夹中的每个“.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
它可以工作,但会出现如下恼人的错误:

find "Test Folder" -type d -name .dummy -exec rm -rf {} \;
find: Test Folder/.dummy: No such file or directory
有没有办法使这两种解决方案都能成功?

试试看

find "Test Folder" -type d -name .dummy -exec rm -rf \"{}\" \;
注意
-exec
选项的
rm-rf“{}”
arg中的额外引号。之所以需要它们,是因为名称
testfolder/.dummy
中有一个空格。所以你需要报价。

试试看

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

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

有几件事。最简单的方法是更换和使用

$ find 'Test Folder' -type d -print0 | xargs -0 rm -rf
另一个选择是

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

有几件事。最简单的方法是更换和使用

$ find 'Test Folder' -type d -print0 | xargs -0 rm -rf
另一个选择是

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

查找“测试文件夹”-类型d-name.dummy'-delete

查找“测试文件夹”-类型d-name.dummy'-delete

实际需要额外的引号吗?我不确定它们是否正确。是否要在{}处转义引号?否则它们会被shell命令行解析吃掉。是否确实需要额外的引号?我不确定它们是否正确。您想\escape在{}处的引号,否则它们会被shell命令行parse吃掉。将
-depth
添加到
find
命令,或者如果您有
path/.dummy/path/.dummy
则会出错。Charlie,您的命令似乎会删除整个“测试文件夹”,而不仅仅是它的.dummy/“subdir(缺少
-name.dummy
)将
-depth
添加到
find
命令中,或者如果您有
path/.dummy/path/.dummy
,则会出现错误。Charlie,看起来您的命令将删除整个“测试文件夹”,而不仅仅是它的.dummy/”子文件夹(缺少
-name.dummy