În primul rând, vă rog să-mi scuzați engleza mea săracă.
Încerc să scriu un script shell pentru a curăța unele fișiere de un anumit tip din folderele mele de rezervă.
Trebuie să elimin fișierele de un anumit tip, cu excepția celor mai noi 10 din fiecare folder.
Structura folderului arată astfel:
Dosarul rădăcină
â
âââ folder_1
â âââ file_1.txt
â âââ file_2.txt
â âââ file_n.txt
â
âââ folder_2
â âââ file_1.txt
â âââ file_2.txt
â âââ file_n.txt
â
âââ folder_n
â âââ file_1.txt
â âââ file_2.txt
â âââ file_n.txt
â
Am folosit scriptul de la David Foerster ca bază, dar nu își pot da seama cum să funcționeze separat în foldere diferite fără a scrie manual fiecare nume de folder în script.
În prezent, scriptul arată astfel:
găsiți /volume1/rootfolder/ -type f -name *.txt -printf '%T@ %p\0' |
sortare --zero-terminated --reverse --numeric-sort --field-separator=' ' --key 1,1 |
gawk -F ' ' -v RS='\0' -v ORS='\0' -v retain_count=10 \
'BEGIN{ maxage = systime() - retain_younger_days * 24 * 3600; }
(NR > retain_count) && (int($1) < maxage) { print(substr($0, length($1) + 2)); }' |
xargs -r0 -- rm --
Dar problema este că elimină toate fișierele din toate folderele, cu excepția celor mai recente 10. Deci, în general, am doar 10 fișiere în toate folderele, nu 10 în fiecare folder.
Vă rog, ajutați-mă să îmi dau seama cum să fac un script pentru a procesa fiecare folder separat.