В bash: как найти и удалить каталоги, содержащие определенный файл, только если файл старше X минут

В bash: как найти и удалить каталоги, содержащие определенный файл, только если файл старше X минут

Как в 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 {} \;
    

Связанный контент