Відповіді:
Може щось подібне
find . -type f | wc -l
зробив би трюк. Спробуйте команду з батьківської папки.
find . -type f -ls | wc -l
find . -type f -print0 | tr -d -c '\0' | wc -c
find . -type f -printf . | wc -c
- Я приймаю друк для свого рішення замість мого -exec echo.
Для підрахунку файлів (навіть файлів без розширення) в корені поточного каталогу використовуйте:
ls -l | grep ^- | wc -l
Для підрахунку файлів (навіть файлів без розширення) рекурсивно з кореня поточного каталогу, використовуйте:
ls -lR | grep ^- | wc -l
Найшвидший і найпростіший спосіб - це використовувати tree
. Його швидкість обмежена вашим вихідним терміналом, тому, якщо ви передаєте результат tail -1
, ви отримаєте негайний результат. Ви також можете контролювати, на якому рівні каталогу вам подобаються результати, скориставшись -L
опцією. Для кольорового виводу використовуйте -C
. Наприклад:
$ tree share/some/directory/ | tail -1
558 directories, 853 files
$ tree -L 2 share/some/directory/ | tail -1
120 directories, 3 files
Якщо його вже немає, ви можете отримати його тут .
find -type f -printf . | wc -c
Не рахуйте вихідні рядки знаходження, тому що назви файлів, що містять 99 нових рядків, будуть рахуватися як 100 файлів.
Використовуйте цю команду для кожної папки на шляху
for D in *; do echo $D; find $D -type f| wc -l; done
здається, що пошук швидше, ніж дерево, тому я використовував нижче для підрахунку файлів у кожному каталозі поточного робочого каталогу (ігнорування файлів у CWD), дозволяючи директоріям мати пробіли:
ls -d */ | while read dir_line
do
echo -n "$dir_line :"
find "$dir_line" -type f | wc -l
done
ls
є дуже поганою ідеєю.
Можна використовувати find . | wc -l
find .
буде перераховано всі файли та папки та вміст їх, починаючи з вашої поточної папки.
wc -l
підраховує результати знахідки
Я б пішов із цим варіантом сам:
ls -alR | grep -c ^ -