Nagyméretű fájlok keresése linux rendszereken

| Német Krisztián | 2010. október 11. hétfő

Erre a problémára nincs külön parancs a linuxban. Azonban a find paranccsal és egy átirányítással már egész jó eredményeket érhetünk el.

Listázzuk ki a nagyméretű fájlokat

Jelenítsük meg a képernyőn az 50M nagyobb fájlokat. Írjuk ki az útvonalukat és a méretüket:

Redhat/Centos/Fedora rendszereken

find {/path/to/directory/} -type f -size +{size-in-kb}k -exec ls -lh {} \; | awk '{ print $9 ": " $5 }'

A fenti kód egy általános leírás, ahol meg kell adni a a vizsgálni kivánt könyvtárat (/path/to/directory) és a fájl méretét kilobájtban. Ha a megfelelő könyvtárban állunk akkor így néz ki a parancs:

$ find . -type f -size +50000k -exec ls -lh {} \; | awk '{ print $9 ": " $5 }'

Jól meghízott logfájljainkat például így találjuk meg:

$ find /var/log -type f -size +100000k -exec ls -lh {} \; | awk '{ print $9 ": " $5 }'

Debian/Ubuntu rendszereken

Minimális az eltérés, az ls -lh kimenetének a $8 és $5 mezőjére van szükségünk, vagyis így néz ki a parancs:

find {/path/to/directory} -type f -size +{file-size-in-kb}k -exec ls -lh {} \; | awk '{ print $8 ": " $5 }'

Ha valaki nagyon látványosan szeretné megoldani ezt a problémát akkor a perlt ajánlom neki:

du -k | sort -n | perl -ne 'if ( /^(\d+)\s+(.*$)/){$l=log($1+.1);$m=int($l/log(1024));
printf ("%6.1f\t%s\t%25s %s\n",($1/(2**(10*$m))),(("K","M","G","T","P")[$m]),
"*"x (1.5*$l),$2);}'

					
				

Várjuk a hozzászólásokat!

Előző bejegyzés

Következő bejegyzés