GNU/Linux >> Znalost Linux >  >> Linux

Shell skript pro počítání souborů a poté odstranění nejstarších souborů

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 otestujte find 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ísto tail protože si nikdy nemohu vzpomenout, zda potřebuji tail -n +10 nebo tail -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 do rm .

Jako u všeho tohoto druhu prosím experimentujte na bezpečném místě.


Linux
  1. Shell Script pro tisk pyramidy hvězd

  2. Jak hledat soubory pomocí regulárního výrazu ve skriptu linuxového shellu

  3. Počítejte řádky ve velkých souborech

  1. Jak získat název distribuce a číslo verze v jednoduchém skriptu Shell?

  2. Určit prostředí ve skriptu za běhu?

  3. Shell skript pro přesun nejstarších souborů?

  1. Určení cesty ke zdrojovému skriptu Shell?

  2. Bash skript k odstranění nejstaršího souboru ze složky?

  3. Shell Script:Třídění souborů do adresářů a podadresářů?