Bash脚本OSX不删除它找到的文件

时间:2012-03-13 17:37:04

标签: macos bash cron find

我在这里有这个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上。

任何帮助都会很棒。谢谢!

3 个答案:

答案 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。