“rm”(删除)目录中的800万个文件?

时间:2012-04-01 22:17:06

标签: linux filesystems

我的/ tmp中有800万个文件,我需要删除它们。这个服务器也运行非常重要的应用程序,我不能超载它。

$ ls | grep .| xargs rm 

上述内容使我的应用无法响应。

您有任何想法如何删除这些文件?提前谢谢!

3 个答案:

答案 0 :(得分:2)

是的,不要使用ls(因为它可能会对文件进行排序,文件列表可能会占用比你想要的更多的内存),不要添加像管道或xargs这样的无意义的间接。

find . -type f -delete

答案 1 :(得分:1)

grep .匹配任何内容,包括任何内容。

将其从链中删除,以删除为每个文件启动的进程。这应该可以很好地加快速度。

ls | xargs rm -rf

请注意,这会占用空白,因此需要改进

ls | xargs -I{} rm -v {}

当然,更快的方法是删除目录并重新创建它。但是,您需要注意您的脚本不会在目录树中“丢失”并删除不应该删除的内容。

rm -rf dir
mkdir dir

请注意,删除所有文件以及删除和重新创建目录之间存在一些细微差别。删除所有文件将删除可见文件和目录;删除目录并重新创建将删除所有文件和目录,可见和隐藏

答案 2 :(得分:-1)

试试这个:

ls -1 | grep -v -e "ignoreFile" -e "ignoreFile2" | xargs rm -rf

ls -1简化了ls | grep

grep -v将从列表中删除行。只需给它任何不应删除的文件,用-e标志分隔模式

只是为了完整的解释: (我猜这已经知道了) rm -rf:

-r recursive
-f force