一次删除大量文件夹
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}
我有一个 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}