如何清空具有大量/大量文件的 linux 目录? [复制]

Posted

技术标签:

【中文标题】如何清空具有大量/大量文件的 linux 目录? [复制]【英文标题】:How do you empty a linux directory with a large size/number of files? [duplicate] 【发布时间】:2015-10-16 10:37:16 【问题描述】:

我在 linux 中有一个目录,它有几十万个文件,大约 100 Gb。我尝试使用'rm -f *'清除目录,并得到以下错误:

>rm -f *
-ksh: rm: /bin/rm: cannot execute [Argument list too long]

当我尝试 find 命令时,我得到了同样的错误。如果我能得到足够小的表达式,我可以删除单个文件和组,但这可能需要几天时间才能将它们全部清除。有谁知道清空大目录的更好方法吗?

【问题讨论】:

文件名有规律吗?所以你可以编写一个脚本来迭代它们。您可以编写脚本将它们分组删除,即使它们没有。 实际上,通常最好删除整个目录 (rm -rf dir) 并重新创建它,而不是清空它。 这是一个重复的,我在发布之前搜索时没有找到那个问题。我将尝试该线程中的 -xargs 建议。 相关:Does "argument list too long" apply to shell builtins? 【参考方案1】:

尝试以下方法:

rm -R -f [your_directory_path]

然后只需手动重新创建您的目录,我相信这种方式比您尝试做的更容易:

mkdir [old_directory_name]

【讨论】:

我确实考虑过这一点,问题是我只有目录内文件的权限。实际目录本身对我来说是只读的。显然我可以让基础设施管理员来做这件事,但在周六晚上没有多少人可以解决开发问题 :) 在 Ubuntu 中的目录名称末尾加一个星号,例如 /*

以上是关于如何清空具有大量/大量文件的 linux 目录? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

删除目录下大量小文件和清空大文件

从具有大量列的 DataTable 添加值后清空 DataGridView

linux下删除大量文件(rm 参数过长)

rsync巧妙的删除大量小文件

Linux 清空文件内容

linux下删除某个目录下大量文件办法