我有一个正在运行的下载程序(在 perl 中)尝试执行 mv 系统命令。
mv的输出
mv: cannot move `./PMC5318673/EXCLI-15-758.pdf' to `/directory/EXCLI-15-758.pdf': No space left on device
驱动器上有空间,但我相信该文件夹已用完所有索引节点。
因此,我们提出的解决方案是删除目录中最旧的文件并尝试将文件移动到那里,如果仍然没有空间进行 mv 删除下一个最旧的文件。
我需要一个快速运行的系统命令。 (ls 需要很长时间,因为可能有数百万个或更多的文件?)可以删除最旧的文件。另外,这些文件有时可能位于子文件夹中。
另外,如果您能想到与删除最旧的文件不同的想法,请告诉我。
答案1
在 zsh 中:
rm -- **/*(.om[-1])
(或来自不同的外壳zsh -c 'rm -- **/*(.om[-1])'
:)
意思是:
答案2
删除最旧的文件
find . -name '*some-pattern*' -type f -printf '%T+ %p\n' | sort | head -n1 | awk '{print $2}' | xargs rm -v
此处的目的-name '*some_pattern*'
是将匹配限制为仅匹配您要删除的文件
答案3
有人回答了这个问题,然后删除了他们的答案,但我使用了他们给出的答案。
find /path -mtime +1000 -exec rm -rf {} \;
这将删除超过 1000 天的文件。