如何删除许多(200 000)个文件?

如何删除许多(200 000)个文件?

我必须从文件夹中删除 200 000 个文件(全部),并且我不想删除文件夹本身。

使用 rm 时,我收到“参数列表太长”错误。我尝试使用 xargs 执行某些操作,但我不是 Shell 专家,因此它不起作用:

find -name * | xargs rm -f

答案1

$ find /path/to/folder -type f -delete

答案2

你做的一切都是对的。这是‘*’这会产生问题(shell 将其扩展为文件列表,而不是find)。正确的语法可能是:

cd <your_directory>; find . -type f | xargs rm -f
find <your_directory> -type f | xargs rm -f

(后者效率稍低,因为它会将较长的名称传递给xargs,但您几乎不会注意到:-))

或者你可以逃避你的‘*’像这样(然而在那种情况下它也会尝试删除“。”和“..”;这不是什么大问题 - 你只会收到一个小警告:-)):

find . -name '*' | xargs rm -f
find . -name "*" | xargs rm -f
find . -name \* | xargs rm -f

如果您的文件名包含空格,请使用以下命令:

find . -type f -print0 | xargs -0 rm -f

答案3

以下命令将从中删除所有文件当前的目录:

find . -type f -exec rm {} \;

答案4

感谢 quantas 的回答,这里是一些补充。

如果您喜欢删除具有特定名称模式的文件,则可以像这样编写。还添加了 -print,以便您可以看到文件被删除时发生的情况。

sudo find /home/mydirectory -name "*.jpg" -type f -print -delete

例如,这将删除 mydirectory 中的所有 jpeg。

相关内容