Прежде всего, извините мой плохой английский.
Я пытаюсь написать сценарий оболочки для очистки некоторых файлов определенного типа в моих папках резервного копирования.
Мне нужно удалить файлы определенного типа, кроме 10 самых новых в каждой папке.
Структура папки выглядит так:
Корневая папка
✓
★ папка_1
â âââ файл_1.txt
â âââ файл_2.txt
â âââ file_n.txt
✓
★ папка_2
â âââ файл_1.txt
â âââ файл_2.txt
â âââ file_n.txt
✓
âââ папка_n
â âââ файл_1.txt
â âââ файл_2.txt
â âââ file_n.txt
✓
Я использовал скрипт из Дэвид Ферстер в качестве основы, но не могу понять, как заставить его работать в разных папках отдельно, не записывая вручную имя каждой папки в скрипте.
На данный момент скрипт выглядит так:
найти /volume1/rootfolder/ -type f -name *.txt -printf '%T@ %p\0' |
sort --zero-terminated --reverse --numeric-sort --field-separator=' ' --key 1,1 |
gawk -F ' ' -v RS='\0' -v ORS='\0' -v keep_count=10 \
'НАЧАЛО { maxage = systime() - keep_younger_days * 24 * 3600; }
(NR > keep_count) && (int($1) < maxage) { print(substr($0, length($1) + 2)); }' |
xargs -r0 -- гм --
Но проблема в том, что он удаляет все файлы во всех папках, кроме 10 последних. Итак, у меня всего 10 файлов во всех папках, а не по 10 в каждой папке.
Помогите, пожалуйста, разобраться, как сделать скрипт для обработки каждой папки отдельно.