我正在尝试删除包含 rar 文件的当前工作目录的所有子目录。
我的第一次尝试:find -name *.rar -exec rm -r {}/.. ';'
失败,因为这不是一个有效的目录。我尝试使用dirname {}
更明智的命令,但决定在几乎删除我不想要的东西后才问。
我在 Windows 7 上使用 Cygwin。
使用 zsh:
rm -rf **/*.rar(:h)
Run Code Online (Sandbox Code Playgroud)
后缀:h
应用历史扩展修饰符 h
(“head”),它删除每个匹配项的基本名称,仅保留目录部分。
确保检查这些确实是您要删除的目录!例如,先将它们移动到一个临时目录:
mkdir DELETE
mv **/*.rar(:h) DELETE/
# check that you really want to delete everything in DELETE
rm -r DELETE
Run Code Online (Sandbox Code Playgroud)
你可以用一对语句来做到这一点。
首先,使用以下命令获取要删除的目录列表
find -name *.rar -exec dirname {} ';' > toremove
Run Code Online (Sandbox Code Playgroud)
接下来,cat toremove
确保它包含您想要的文件夹。然后,将其传递给rm -rf
使用
sed 's/^/"/g' toremove | sed 's/$/"/g' | xargs rm -r
Run Code Online (Sandbox Code Playgroud)
最后的,rm toremove
。