The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
удалить старые папки по содержимому, !*! Роман, 10-Июн-20, 11:29  [смотреть все]
добрый там у кого что.
подскажите как мне удалить именно папки в который файлы старше определенного периода
find /mnt/backup/ -mtime +365 -type d -maxdepth 5 -mindepth 5 не прокатил так как в папках встречаются свежие файлы

p/s
то есть мне нужно получить список папок для удаления содержимое которых старше к примеру года
подскажите способ плиз

  • удалить старые папки по содержимому, !*! Аноним, 11:46 , 10-Июн-20 (1)
    если в каталоге есть и старые и новые файлы, то старые все равно надо сохранить и пропустить каталог?
  • удалить старые папки по содержимому, !*! Аноним, 15:55 , 10-Июн-20 (4)

    find . -type d -links 2 | while read DIR ; do [ -z $(find "$DIR" -type f -mtime -365) ] && echo "$DIR" ; done ;

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

    • удалить старые папки по содержимому, !*! Роман, 16:00 , 10-Июн-20 (6)
      > find . -type d -links 2 | while read DIR ; do
      > [ -z $(find "$DIR" -type f -mtime -365) ] && echo
      > "$DIR" ; done ;
      > Находит все директории без субдиректорий и печатает те, в которых файлы не
      > менялись в последние 365 дней. Проверьте, должно работать.

      сейчас попробую

    • удалить старые папки по содержимому, !*! Аноним, 16:01 , 10-Июн-20 (7) +1
      `find . -type d -links 2 | while read DIR ; do [ -z "$(find "$DIR" -type f -mtime -365)" ] && echo "$DIR" ; done ;`

      Вот окончательная работающая версия.
      Посвящается всем, кому лень прочитать тоненькую книжку по шелл скриптам.

    • удалить старые папки по содержимому, !*! Роман, 16:03 , 10-Июн-20 (8)
      > find . -type d -links 2 | while read DIR ; do
      > [ -z $(find "$DIR" -type f -mtime -365) ] && echo
      > "$DIR" ; done ;
      > Находит все директории без субдиректорий и печатает те, в которых файлы не
      > менялись в последние 365 дней. Проверьте, должно работать.

      а если есть субдериктории

      • удалить старые папки по содержимому, !*! Аноним, 17:04 , 10-Июн-20 (10)
        >> find . -type d -links 2 | while read DIR ; do
        >> [ -z $(find "$DIR" -type f -mtime -365) ] && echo
        >> "$DIR" ; done ;
        >> Находит все директории без субдиректорий и печатает те, в которых файлы не
        >> менялись в последние 365 дней. Проверьте, должно работать.
        > а если есть субдериктории

        Да это в принципе не важно, просто для исключения прохода по одним и тем же файлам по много раз, если большая вложенность.
        Для нормальной работы нужно загружать в пайп только те директории, которые потенциально требуется удалить. Как этот список составить, сами думайте.

  • удалить старые папки по содержимому, !*! ACCA, 21:09 , 23-Июн-20 (11)
    Разверни задачу.

    Найди каталоги, где есть новые файлы. Ты ищешь файлы, поэтому depth = 5+1:

    find -mtime -365 -maxdepth 6 -mindepth 6 -type f -print0 | xargs -0 dirname -z | sort -zu

    найди все каталоги. Ты ищешь каталоги, поэтому depth = 5:

    find -maxdepth 5 -mindepth 5 -type d -print0 | sort -zu


    Слей два списка в один и найди тех, кто упомянут только один раз:

    sort -z <(find -mtime -365 -maxdepth 6 -mindepth 6 -type f -print0 | xargs -0 dirname -z | sort -zu) \
    <(find -maxdepth 5 -mindepth 5 -type d -print0 | sort -zu) | uniq -zu

    Для отладки посмотри на эти каталоги:

    sort -z <(find -mtime -365 -maxdepth 6 -mindepth 6 -type f -print0 | xargs -0 dirname -z | sort -zu) \
    <(find -maxdepth 5 -mindepth 5 -type d -print0 | sort -zu) | uniq -zu | xargs -0 -L 1 echo

    И удали их нах.

    sort -z <(find -mtime -365 -maxdepth 6 -mindepth 6 -type f -print0 | xargs -0 dirname -z | sort -zu) \
    <(find -maxdepth 5 -mindepth 5 -type d -print0 | sort -zu) | uniq -zu | xargs -0 rm -rf


    Учти, что если у тебя нет новых файлов, то будут удалены вообще все каталоги.





Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру