我在这里有这个bash脚本
#!/bin/bash
find /Users/ -name "*.mov" -o -name "*.flv" -o -name "*.mp4" -o -name "*.avi" -o -name "*.wmv" -o -name "*.mpeg" -o -name "*.avi" -o -name "*.wmv" -o -name "*.f4v" -o -name "*.m4v" -o -name "*.mxf" -o -name "*.ts" -type f -mtime +7 -exec rm -rf {} \;
它找到所有超过7天的文件,并且工作正常,但是当我希望它删除我发现的结果集时,它不会删除任何文件。有什么我做错了吗?这是在Mac OSX 10.6上。
任何帮助都会很棒。谢谢!
答案 0 :(得分:1)
而不是-exec rm -rf {}\;
,如果-delete
命令的版本可用,请尝试使用find
选项。这将在每次尝试删除失败后显示错误消息。这可能会为您提供更多信息。
$ find . -name "*.foo" -type f -mtime +7 -delete
find: -delete: unlink(./four.foo): Permission denied
find: -delete: unlink(./one.foo): Permission denied
find: -delete: unlink(./three.foo): Permission denied
find: -delete: unlink(./two.foo): Permission denied
find
都没有从delete / rm命令返回实际的退出代码。你可能想做这样的事情:
find . -name ... -type f -mtime +7 | while read file
do
if rm -fr $file
then
echo "Successfully deleted $file"
else
echo "Error deleting file: Exit code $?"
fi
done
这可能会让您更好地了解正在发生的事情。
答案 1 :(得分:0)
也许你应该用sudo运行命令?作为普通用户,您可能无法完全访问所有目录。
答案 2 :(得分:0)
find
命令位于/ usr / bin中,该命令不在cron作业的默认PATH中。将其作为/usr/bin/find
运行,或在脚本的开头设置PATH。