linux - 使用 xargs 删除目录

标签 linux command-line-interface xargs

我有一个文件夹列表,我想使用 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/

相关文章:

linux - 一个衬垫,用于使用 xargs 在其他命令生成的搜索文本上 grep 一个命令的输出

linux - 从多个文本文件中删除前 n 行和后 n 行

c# - 在 C++/CLI/C# 项目中启用 "Native Code Debugging"会使应用程序崩溃

node.js - 如何使用 ocif 创建 Git 风格的子命令?

bash - 更改 xargs 参数以在每个参数中包含一个标志的方法?

linux - 如何在 Linux 上的文件扩展名前批量添加日期

linux - 如何从Linux中两个相似字符串之间的文件中提取文本?

linux - linux共享库中的JNI代码

c# - 在 C# 中对由字符串组成的列表中的一些元素求和

mysql - mysqlimport --delete 背后发生了什么? auto_increment 值没有被重置