GNU/Linux >> Znalost Linux >  >> Linux

Počet souborů v jednotlivých podadresářích

Za předpokladu, že chcete pouze rekurzivní počet souborů, nikoli adresářů a jiných typů, mělo by fungovat něco takového:

find . -maxdepth 1 -mindepth 1 -type d | while read dir; do
  printf "%-25.25s : " "$dir"
  find "$dir" -type f | wc -l
done

Tento úkol mě zaujal natolik, že jsem chtěl sám přijít na řešení. Nezabere to ani chvíli smyčky a MAY být rychlejší v rychlosti provádění. Netřeba říkat, že Thorovo úsilí mi hodně pomohlo pochopit věci do detailu.

Takže tady je můj:

find . -maxdepth 1 -mindepth 1 -type d -exec sh -c 'echo "{} : $(find "{}" -type f | wc -l)" file\(s\)' \;

Z nějakého důvodu vypadá skromně, protože je mnohem výkonnější, než vypadá. :-)

Pokud to však máte v úmyslu zahrnout do .bash_aliases soubor, musí vypadat takto:

alias somealias='find . -maxdepth 1 -mindepth 1 -type d -exec sh -c '\''echo "{} : $(find "{}" -type f | wc -l)" file\(s\)'\'' \;'

Všimněte si velmi složitého zacházení s vnořenými jednotlivými citáty. A ne, není pro sh -c je možné použít dvojité uvozovky argument.


find . -type f | cut -d"/" -f2 | uniq -c

Zobrazí seznam složek a souborů v aktuální složce s počtem souborů nalezených pod nimi. Rychlé a užitečné IMO. (soubory se zobrazují s počtem 1).


Linux
  1. Najít nejnovější soubory?

  2. Najít duplicitní soubory?

  3. Výpis počtu souborů v každé složce Kde název složky odpovídá vzoru?

  1. bash najít adresáře

  2. Jak spočítat počet souborů v každém adresáři?

  3. Jak spočítat celkový počet řádků nalezených souborů?

  1. Najít vyloučený adresář?

  2. Jaký je nejlepší způsob, jak spočítat počet souborů v adresáři?

  3. Najít největší soubory rekurzivně?