删除所有小于特定大小的文件的脚本(cron 作业)

删除所有小于特定大小的文件的脚本(cron 作业)

我需要删除 /media/motion 中所有小于 13MB 的文件以及所有具有相同文件名并附加了额外扩展名的文件(它们都远小于 13MB),因此我在查找结果中附加“*”。

文件是这样的:

file1.mp4
file1.mp4.thumb
file2.mp4
file2.mp4.thumb

我想删除所有小于 13MB 的 .mp4 文件以及相应的 .mp4.thumb 文件(它们都非常小)

我尝试过两种方法。回显命令并运行它们可以工作,但运行脚本则不行:

/usr/bin/find /media/motion -name \"*.mp4\" -size -13M -exec rm -f {}\\* \\\;  

我发现:缺少“exec”的参数

我也尝试过:

/usr/bin/find /media/motion -name "*.mp4" -size -13M -print | xargs printf -- '%s \* \n' | xargs -0 rm -f

这会导致没有输出。

答案1

如果您没有更改默认的 crontab PATH ( /usr/bin:/bin),那么这应该可以在您的 shell 和 crontab 中工作:

find /media/motion -type f -name '*.mp4' -size -13M -exec sh -c 'for f; do rm "$f"*; done' sh {} +

这使用 shell 脚本循环文件并扩展*到预期的文件。

如果需要的话-f可以添加。rm

相关内容