Здається, найпростіший спосіб find /path/to/search -ls | wc -l
Find використовується для переходу до всіх файлів і папок.
-ls
перелічити (роздрукувати) всі імена. Це за замовчуванням, і якщо ви не залишите його, він все одно буде працювати однаково майже у всіх системах. (Майже, оскільки деякі можуть мати різні за замовчуванням). Хоча явно використовувати це, хоча.
Якщо ви просто використовуєте find /path/to/search -ls
частину, вона надрукує всі файли та каталоги на ваш екран.
wc
це кількість слів. -l
опція говорить це , щоб підрахувати кількість рядків.
Використовувати його можна кількома способами, наприклад,
- wc тестовий файл
- тестовий файл для котів | туалет
Перший варіант дозволяє wc відкрити файл і підрахувати кількість рядків, слів і знаків у цьому файлі. Другий варіант робить те саме, але без імені файлу він читає з stdin.
Ви можете комбінувати команди з трубою |
. Вихід з першої команди буде переданий на вхід другої команди. Таким чином, find /path/to/search -ls | wc -l
використовує find для списку всіх файлів і каталогів і подає вихід на wc. Потім Wc підраховує кількість рядків.
(Іншою альтернативою був би "ls | wc", але пошук набагато гнучкіший і хороший інструмент для навчання.)
[Редагувати після коментаря]
Можливо, буде корисно поєднати знахідку та exec.
Наприклад, find / -type d ! \( -path proc -o -path dev -o -path .snap \) -maxdepth 1 -exec echo starting a find to count to files in in {} \;
буде перераховано всі каталоги в /, рядки, які ви не хочете шукати. Ми можемо запустити попередню команду на кожному з них, отримуючи суму файлів у папці в /.
Однак:
- Для цього використовується специфічне розширення GNU -maxdepth.
Він буде працювати на Linux, але не на будь-якому unix-a-подібному.
- Я підозрюю, що ви насправді хочете отримати кількість файлів для кожного підкаталу.