我使用xargs
find
有一个我要删除的文件夹列表
find
命令$ find /home/users/lukes -maxdepth 1 -type d > 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
$ 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
有什么建议吗?
答案 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。
希望它有所帮助。