Ujistěte se, že vaše pwd je správný adresář pro odstranění souborů (za předpokladu, že v názvu souboru jsou pouze běžné znaky):
ls -A1t | tail -n +11 | xargs rm
uchovává nejnovějších 10 souborů. Používám to s kamerovým programem 'motion' k uchování nejnovějších souborů uchopení snímků. Děkuji všem dalším odpovědím, protože jste mi ukázali, jak na to.
find je běžný nástroj pro tento druh úloh:
find ./my_dir -mtime +10 -type f -delete
VYSVĚTLENÍ
./my_dirváš adresář (nahraďte svým vlastním)-mtime +10starší než 10 dní-type fpouze soubory-deletežádné překvapení. Odstraňte jej a otestujtefindfiltr před provedením celého příkazu
A dejte pozor, aby ./my_dir existuje, aby se vyhnul nepříjemným překvapením!
Správný způsob, jak to udělat, je pomocí logrotate .
Zkuste toto:
ls -t | sed -e '1,10d' | xargs -d '\n' rm
To by mělo zpracovat všechny znaky (kromě nových řádků) v názvu souboru.
Co se tady děje?
ls -tvypíše všechny soubory v aktuálním adresáři v sestupném pořadí podle času úpravy. Tj. poslední upravené soubory jsou první, jeden název souboru na řádek.sed -e '1,10d'smaže prvních 10 řádků, tj. 10 nejnovějších souborů. Toto používám místotailprotože si nikdy nemohu vzpomenout, zda potřebujitail -n +10nebotail -n +11.xargs -d '\n' rmshromažďuje každý vstupní řádek (bez ukončovacího nového řádku) a předává každý řádek jako argument dorm.
Jako u všeho tohoto druhu prosím experimentujte na bezpečném místě.