我的/ tmp中有800万个文件,我需要删除它们。这个服务器也运行非常重要的应用程序,我不能超载它。
$ ls | grep .| xargs rm
上述内容使我的应用无法响应。
您有任何想法如何删除这些文件?提前谢谢!
答案 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