使用xargs删除目录

时间:2014-11-13 17:29:32

标签: linux command-line-interface xargs

我使用xargs

生成的find有一个我要删除的文件夹列表

find命令

$ find /home/users/lukes -maxdepth 1 -type d > test.txt

的test.txt

/home/users/lukes/2
/home/users/lukes/6
/home/users/lukes/7
/home/users/lukes/3
/home/users/lukes/1
/home/users/lukes/4
/home/users/lukes/5

命令和--verbose输出

$ xargs --verbose -0 -I{} rm -rfv {} < test.txt 
rm -rfv /home/users/lukes/2
/home/users/lukes/6
/home/users/lukes/7
/home/users/lukes/jadu_package_1.1.0
/home/users/lukes/3
/home/users/lukes/1
/home/users/lukes/4
/home/users/lukes/5

但目录不会被删除?

我正在使用-0,因为当我真正运行它时可能有空格,我正在生成列表,所以我可以确认每行都可以安全删除文本文件而不是管道{{ 1}}直接发送到find

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

所以,让我首先说我对xargs有一种至高无上的厌恶。如果你不小心,这可能真的很危险。话虽这么说,这样的事情会起作用:

find / home / users / luke -mindepth 1 -maxdepth 1-type d | xargs --verbose -I {} rm -vfr&#34; {}&#34;

通过在双引号中抛出{},可以删除任何涉及空格的问题。我倾向于使用&#34;&#34;或者&#39;&#39;尽可能经常地围绕这样的东西。我把mindepth放在那里以确保它不包含父文件夹,因为一些操作系统有maxdepth包括父目录(即&#39;。&#39;),这将有效地核对整个文件夹。我假设你不想要那个。

再次,对xargs非常小心。那命令可能是邪恶的。我会说首先添加-0以显示将要运行的内容,然后在确定后删除-0。

希望它有所帮助。