【发布时间】:2020-04-27 09:24:36
【问题描述】:
我有一个文件夹,其中包含如此多的文件/文件夹,以至于即使像 du 和 find 这样的基本命令也会崩溃。我想从中清理一些旧文件...但显然我无法使用 find 命令来执行此操作...
# find /opt/graphite/storage/whisper -mtime +30 -type f -delete
Aborted (core dumped)
由于find 不起作用,我可以使用什么命令或技巧从该文件夹中删除文件?
【问题讨论】:
-
“中止”不是段错误; SIGABRT != SIGSEGV。这听起来还是
find中的一个错误;即使在这样的特殊情况下,它也不应该崩溃。 This thread 让我相信它可能内存不足,这使得崩溃稍微更容易原谅。 -
我也认为它的内存不足...请注意
du遭受同样的命运。 -
您可以使用
opendir、readdir、stat和unlink编写自己的 C 程序,这很容易保持在恒定的内存使用量内(或者最坏的情况是深度线性目录嵌套)。 -
或者,如果你不想写C,你可以尝试一些Perl:Perl to the Rescue: Case Study of Deleting a Large Directory
-
或者在 python 中:stackoverflow.com/a/48393588/1930462(在那里搜索“readdir”)。如果没有人找到可以做到这一点的 bash 命令,可能会走这条路。