我有一个文件夹列表,我想使用 xargs
删除,该列表是使用 find
查找
命令
$ find /home/users/lukes -maxdepth 1 -type d > test.txt
测试.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
因为当我真正运行它时可能会有空格,我正在生成列表以便我可以确认文本文件中的每一行都可以安全删除而不是比管道 find
直接到 xargs
有什么建议吗?
最佳答案
所以,让我先说我非常不喜欢 xargs。如果您不小心,那可能真的很危险。话虽如此,像这样的事情会起作用:
find /home/users/luke -mindepth 1 -maxdepth 1 -type d|xargs --verbose -I{} rm -vfr "{}"
通过将 {} 括在双引号中,您可以消除任何涉及空格的问题。我倾向于尽可能多地使用 ""
或 ''
来围绕此类内容。我将 mindepth 放在那里以确保它不包括父文件夹,因为某些操作系统的 maxdepth 包括父目录(即“.”),这将有效地破坏整个文件夹。我猜你不想要那个。
再次强调,使用 xargs 时要非常小心。该命令可能是邪恶的。我会说首先在其上添加 -0 以使其显示将运行的内容,然后在您确定后删除 -0。
希望对您有所帮助。
关于linux - 使用 xargs 删除目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26914831/