Levytilan tehokas hallinta on tärkeää, varsinkin järjestelmissä, joissa on tiukat tiedostokiintiöt. Hiljattain ylitin tiedostorajani ja tarvitsin nopean tavan selvittää, missä kansioissa on eniten tiedostoja. Tallennustilan käytön analysointiin käytin seuraavaa komentoa:
for d in .* *; do [ -d "$d" ] && echo "$d: $(find "$d" -type f | wc -l)"; done | sort -nr -k2
Komento osa osalta
Tämä yhden rivin komento laskee tehokkaasti tiedostot kaikista nykyisen sijainnin hakemistoista, myös piilotetuista. Näin se toimii:
for d in .* *: käy läpi kaikki tiedostot ja hakemistot, myös piilotetut.
[ -d "$d" ]: varmistaa, että käsitellään vain hakemistoja.
find "$d" -type f | wc -l: laskee kaikki tiedostot (ei hakemistoja) jokaisesta kansiosta alikansioineen.
sort -nr -k2: lajittelee tulokset tiedostomäärän mukaan laskevaan järjestykseen.
Miksi tästä on hyötyä
Tällä komennolla löysin nopeasti hakemistot, jotka vievät eniten inodeja, ja pystyin toimimaan, esimerkiksi siivoamaan tarpeettomia tiedostoja. Tehokas tapa ymmärtää tiedostojen jakautuminen ja pysyä tallennusrajoissa.
Vaihtoehtoisia tapoja
Jos haluat laskea vain kunkin kansion suoraan sisältämät tiedostot (ilman alikansioita), komentoa voi muuttaa näin:
for d in .* *; do [ -d "$d" ] && echo "$d: $(find "$d" -maxdepth 1 -type f | wc -l)"; done | sort -nr -k2
Tämä muunnelma on hyödyllinen, kun tarvitaan paikallisempi kuva tiedostojen jakautumisesta.