Portál AbcLinuxu, 12. května 2025 09:30
ja potrebuju najit soubory co jsou starsi nez dejme tomu rok 2007. Ale jako vysledek bych chtel mit jen velikost slozky /vmail/user1/. Do velikosti by se zapocitaly jen soubory starsiho data. Takze bych chtel vypis:/vmail/user1 /vmail/user2 atd.
kde do velikosti adresare by byly prave zapocitany jen ty starsi soubory. Adresar muze mit nekolik podadresaru. Resim to pres find, ale v podstate se mne podarilo jen ty soubory vypsat :(1GB /vmail/user1 0.9GB /vmail/user2 atd.
( find ... -printf "%k + " ; echo 0 ) | bc
:)
+
, čímž např. pro soubory file1, file2 a file3 o velikostech 100 B, 200 B, 5 B vznikne řetězec 100 + 200 + 5 +. Toto je skoro matematický výraz, který lze předhodit nějaké kalkulačce, akorát pro úplnou správnost je potřeba buď smazat poslední + nebo za plus ještě doplnit nějaké neutrální číslo (u sčítání nula). Takže přidám echo 0
, čímž vznikne výraz 100 + 200 + 5 + 0 a tento výraz nechám zpracovat kalkulačkou bc
, výsledkem je součet velikostí všech souborů nalezených find
em.
find
samozřejmě musíš doplnit ten požadovaný adresář a ty své požadavky na stáří souborů jakožto parametry findu. Zpracování adresářů více uživatelů a přesný formát výpisu dle tvých kritérií jsem neřešil, byl to jen takový hint.
find tvoj_find_expression | xargs du -ch | grep total | awk '{ print $1}'
urcite to nie je presne to co chces ale tadialto by mohla viest cesta ;)
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.