Bash Script OSX не удаляет найденные файлы - PullRequest
0 голосов
/ 13 марта 2012

У меня есть этот скрипт 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 ]

1 голос
/ 13 марта 2012

Вместо -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

Это может помочь вам лучше понять, что происходит.

0 голосов
/ 14 марта 2012

Команда find находится в / usr / bin, которого нет в PATH по умолчанию для заданий cron. Либо запустите его как /usr/bin/find, либо установите PATH в начале вашего скрипта.

0 голосов
/ 13 марта 2012

Может быть, вы должны запустить команду с sudo? Вы не можете иметь полный доступ ко всем каталогам как обычный пользователь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...