The OpenNET Project / Index page

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



"удалить старые папки по содержимому"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Открытые системы на сервере (Разное / Linux)
Изначальное сообщение [ Отслеживать ]

"удалить старые папки по содержимому"  +/
Сообщение от Роман (??), 10-Июн-20, 11:29 
добрый там у кого что.
подскажите как мне удалить именно папки в который файлы старше определенного периода
find /mnt/backup/ -mtime +365 -type d -maxdepth 5 -mindepth 5 не прокатил так как в папках встречаются свежие файлы

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

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения [Сортировка по времени | RSS]


1. "удалить старые папки по содержимому"  +/
Сообщение от Аноним (1), 10-Июн-20, 11:46 
если в каталоге есть и старые и новые файлы, то старые все равно надо сохранить и пропустить каталог?
Ответить | Правка | Наверх | Cообщить модератору

2. "удалить старые папки по содержимому"  +/
Сообщение от Роман (??), 10-Июн-20, 11:53 
> если в каталоге есть и старые и новые файлы, то старые все
> равно надо сохранить и пропустить каталог?

да. в том то и дело

Ответить | Правка | Наверх | Cообщить модератору

3. "удалить старые папки по содержимому"  +/
Сообщение от Аноним (1), 10-Июн-20, 12:41 
красивых вариантов не знаю, к сожалению
если обновленных каталогов ожидается не слишком много, то можно попробовать такую наркоманию
 find /mnt/backup/ -type d -maxdepth 5 -mindepth 5 | fgrep -v -f <(find /mnt/backup/ -type f -mtime -365 -maxdepth 5 -mindepth 5 -printf '%h\n' | sort -u)

Ответить | Правка | Наверх | Cообщить модератору

5. "удалить старые папки по содержимому"  +/
Сообщение от Роман (??), 10-Июн-20, 15:59 
> красивых вариантов не знаю, к сожалению
> если обновленных каталогов ожидается не слишком много, то можно попробовать такую наркоманию
>
 find /mnt/backup/ -type d -maxdepth 5 -mindepth 5 | fgrep -v 
> -f <(find /mnt/backup/ -type f -mtime -365 -maxdepth 5 -mindepth 5
> -printf '%h\n' | sort -u)

спасибо!
лучше все равно я так понял не будет )))

Ответить | Правка | Наверх | Cообщить модератору

9. "удалить старые папки по содержимому"  +/
Сообщение от Аноним (1), 10-Июн-20, 16:50 
только тут по идее не учитывается случай, когда каталог может содержать один старый файл и несколько обновляемых вложенных каталогов
Ответить | Правка | Наверх | Cообщить модератору

4. "удалить старые папки по содержимому"  +/
Сообщение от Аноним (4), 10-Июн-20, 15:55 

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

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

Ответить | Правка | Наверх | Cообщить модератору

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

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

Ответить | Правка | Наверх | Cообщить модератору

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

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

Ответить | Правка | К родителю #4 | Наверх | Cообщить модератору

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

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

Ответить | Правка | К родителю #4 | Наверх | Cообщить модератору

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

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

Ответить | Правка | Наверх | Cообщить модератору

11. "удалить старые папки по содержимому"  +/
Сообщение от ACCA (ok), 23-Июн-20, 21:09 
Разверни задачу.

Найди каталоги, где есть новые файлы. Ты ищешь файлы, поэтому 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


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


Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




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

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