我在 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'
代替测试。-name
Index
Contents
使用zsh
shell 或设置了 shell 选项bash
的 shell globstar
,您还可以使用
rm -r ./**/Index/
或者
rm -r ./**/Contents/Index/
这将rm -r
使用被调用目录的路径名列表进行调用Index
(假设目录路径的所有部分都是非隐藏的,并且假设您也可以删除通过名称符号链接的目录Index
,并假设匹配路径名的列表不是数千个条目长)。尾部斜杠确保只有目录受到影响。
答案3
我从另一个来源得到了解决方案并且它有效。
find . -name directory* -print0 | xargs -0 rm -R