Нужно пропустить потерянный + найдено при использовании find

Я новичок в Ubuntu, и у меня нет большого опыта работы с Linux / Unix, поэтому, пожалуйста, потерпите меня, пока я пытаюсь пройти через это.

У меня есть система камер, которая записывает отснятый материал, делает снимки экрана и сохраняет их в папке. Проблема заключается в том, что новые файлы не перезаписывают старые файлы, поэтому файловая система заполняется и все новые файлы удаляются.

Поэтому я установил «Запланированные задачи» в графическом интерфейсе Ubuntu и создал задачу, которая запускалась каждый день. Вот задача:

find /media/dvr/* -type f -mtime 0 -exec rm -rf {} \; 

У меня -mtime установлено для 0 для целей тестирования, оно будет установлено на 7, если я смогу заставить это работать.

Проблема в том, что в папке /dvr есть папка lost + found. Когда он попадает в эту папку, он говорит, что у меня нет разрешения на его просмотр, и он никогда не заканчивает поиск. Я использовал sudo для входа и изменения прав доступа и прав доступа rwx, но это все равно не помогает.

Есть ли способ выполнить то, что я хочу сделать, используя find? Есть ли более эффективный способ очистки папки /dvr/?

Как я уже сказал, новичок в этом и пытается выздороветь. Любая помощь будет принята с благодарностью!

2
задан 11 February 2012 в 20:56

3 ответа

Эти find команда не выходит на проблемах разрешения, насколько я знаю, она не может просто находить файлы по различной причине. То, что я могу предложить, должно устранить stderr так, чтобы Вы не получали вводящие в заблуждение сообщения в выводе, и протестировать команду с помощью echo замена rm -rf, т.е.

find /media/drv/ -type f -mtime 7 -exec echo {} \; 2> /dev/null

Это должно перечислить файлы, которые были бы удалены в окончательной версии с rm -rf. Если Вы действительно хотите пропустить lost+found каталог (который не должен быть необходимым), используйте:

find /media/drv/ -type f -mtime 7 -not -wholename "*lost+found*" -exec echo {} \; 2> /dev/null
2
ответ дан 11 February 2012 в 20:56

Установка полномочий правильно должна сделать это. Что делает ls -ld /media/dvr/lost+found, говорят? Также отбросьте * в конце/media/dvr/. Вы хотите, находят для запуска его поиска в/media/dvr/, и когда Вы добавляете *, замены оболочки, которые представляют в виде строки с названием каждого файла, который это находит в/media/dvr/.

также можно просто удалить lost+found каталог.

-1
ответ дан 11 February 2012 в 20:56

Просто сделайте:

find /media/drv -name lost+found -prune -o -type f -exec echo '{}' ';'

В целом это - очень очень плохая идея перенаправить stderr к/dev/null. Смысл stderr должен показать неожиданные ошибки. Если Вы ожидаете, что определенная ошибка тогда создает Вашу команду для предотвращения его.

3
ответ дан 11 February 2012 в 20:56

Другие вопросы по тегам:

Похожие вопросы: