我有一个名为pics_temp
的目录,它太大了,我甚至不能ls
该目录,它有数百万个文件。我想删除该文件。我无法使用rm
或rmdir
和xargs rm -rf
,因为它需要更长的时间,程序将自行终止,那个目录很大......有没有我可以删除该目录的方式吗?
我可以编写shell脚本并将其放在cron作业中,还是有其他方法可以删除该目录中的内容?
感谢您的帮助。
答案 0 :(得分:1)
尝试find
。
find pics_temp -mindepth 1 -print -delete
像这样被调用的 find
不会尝试缓冲大量的文件名,也不会受到参数列表的最大长度限制,也不会长时间分叉进程数百万次。 -mindepth 1
会导致它删除pics_temp
内的所有内容,但不删除目录本身。
它也不依赖于printf %s\\n *
或ls
或其他类似的命令,这些命令都有一个缺点,即在开始生成输出之前要求所有文件都已知。
上面给出的命令有-print
,它会在删除文件之前打印文件。这对于告诉您实际发生的事情非常有用,但它会减慢操作速度。当您确信它正在工作时,您可能希望删除-print
以便命令运行得更快。