删除目录路径中带有空格的目录

删除目录路径中带有空格的目录

我在 macOS 上。我的路径中有很多目录,如下所示:

./FirstName SecondName/A Multi Word Title/Contents/Index/files

我想删除所有Index目录及其内容。我尝试用 逃避空格,\但没有成功。如果有必要,我愿意进行两次操作,删除文件,然后删除目录。

答案1

如果您确实想删除所有这些,您可以使用 shell 文件名模式:

rm -i -v -r ./*/*/Contents/Index

检查rm手册页以了解选项的含义。

答案2

要搜索Index当前目录中或当前目录下调用的目录,然后删除它们,您可以find像这样使用:

find . -depth -name Index -type d -exec rm -r {} \;

这会对您感兴趣的特定目录进行深度优先搜索,并rm -r依次调用每个目录。我们需要进行深度优先搜索(使用-depth),否则我们可能会删除 尚未访问过的目录find,这会产生错误。

如果您需要目录成为目录的子目录,请使用-path '*/Contents/Index'代替测试。-nameIndexContents

使用zshshell 或设置了 shell 选项bash的 shell globstar,您还可以使用

rm -r ./**/Index/

或者

rm -r ./**/Contents/Index/

这将rm -r使用被调用目录的路径名列表进行调用Index(假设目录路径的所有部分都是非隐藏的,并且假设您也可以删除通过名称符号链接的目录Index,并假设匹配路径名的列表不是数千个条目长)。尾部斜杠确保只有目录受到影响。

答案3

我从另一个来源得到了解决方案并且它有效。

find . -name directory* -print0 | xargs -0 rm -R

相关内容