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_dir
váš adresář (nahraďte svým vlastním)-mtime +10
starší než 10 dní-type f
pouze soubory-delete
žádné překvapení. Odstraňte jej a otestujtefind
filtr 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 -t
vypíš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ístotail
protože si nikdy nemohu vzpomenout, zda potřebujitail -n +10
nebotail -n +11
.xargs -d '\n' rm
shromažď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ě.