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

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

使用rm,我得到一个“参数列表太长”的错误。 我试图用xargs做一些事情,但我不是一个壳牌人,所以它不起作用:

find -name * | xargs rm -f 

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

    你做的一切都是正确的。 这是'*' ,给你一个问题(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 

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

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

    你可以试试

     find /path/to/folder -type f -print0 | xargs -0 rm -f 

    要么

     find /path/to/folder -type f -exec rm -f "{}" + 

    荣誉量子答案,这里有一些补充。

    如果你想删除具有特定名称模式的文件,你可以这样写。 还添加了-print,以便您可以在文件被删除时看到发生了什么。

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

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