
Как в bash найти и удалить каталоги, содержащие определенный файл, только если файл старше X минут?
Есть этот ответкоторый находит каталоги, содержащие определенный файл. Однако не ясно, как добавить условие, что файл старше X минут.
решение1
Редактировать: более простой способ:
find . -name 'foobar.dat' -mmin +3 -exec bash -c 'rm -vr "$(dirname "$1")"' bash {} \;
Что в основном заключается в поиске соответствующих файлов и последующем удалении их родительского каталога. Вторая строка "bash" может быть любой, она нужна только для того, чтобы избежать помещения имени файла в "$0" (хотя это, кажется, работает нормально...)
Предыдущее менее элегантное решение:
Я бы подошел к этой проблеме по-другому:
создайте небольшой скрипт, который выполняет
rm -r $(dirname $1)
(т.е. удаляет родительский каталог аргумента)найдите все такие файлы и вызовите для них скрипт:
find . -name 'foobar.dat' -mmin +3 -exec rmparent_script {} \;