我需要删除 /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