一次删除大量文件夹

Deleting large no of folders in one go

我有一个 1M 的列表 folders/directory,我需要在我的系统上删除它。最好的方法是什么?

我正在寻找可能的最佳解决方案,它不会占用大量时间,因为我有一些进程正在等待其完成。

PS: 如果需要,我可以将所有文件夹名称放在一个文件中,或者如果我们不能一次性完成的话,我可以将所有文件夹名称放在一个文件中。

使用xargs工具。它将从文件中读取所有文件夹名称并调用命令 - 在本例中为 rmdir.

xargs rmdir < list_of_folders

如果您确定可以删除非空文件夹,请使用 rm -r 而不是 rmdir

我认为这是最快的速度了。 rmdir 将尽可能快地执行操作(简单的 OS 调用),并且使用 xargs 确保您不会创建 1M 的单独进程。

您可以利用列表中没有 "nested" 个目录。 这样,如果您有三个文件夹 a/ a/b/a/c/,并且 b/c/a/ 中唯一的条目,那么您可以省略 a/b/a/c/,只调用 rm -r a/。 但是不值得检查 ls,因为 ls 也会花费您可能不会节省的时间。

rm command is perfectly capable of handling this. Just give it the list of folders you need to delete (shell expansions 可以为您节省一些时间),并且不要忘记 -r 开关。

使用一些常见扩展的示例:

rm -r folder_a src/dir_* app_{logs,src,bin}