Як рахувати кількість файлів у каталозі, але не рекурсивно


30

Просте запитання, я впевнений. Я бачив відповідь, яка показує, як це зробити, включаючи підкаталоги, але я хочу знати, скільки файлів (а не папок) є лише в поточному каталозі. Спасибі.

Відповіді:


60
ls -F |grep -v / | wc -l
  1. ls -F перерахуйте всі файли та додайте до запису індикатор (один із * / => @ |)
  2. grep -v /зберігайте всі рядки, що не містять косу рису
  3. wc -l рахувати рядки

Список всього, крім каталогів.
1313

Я дуже вдячний за те, що ви його розірвали та пояснили розділи, дякую за працюючу та добре пояснену відповідь!
bcsteeve

1
Хоча всі відповіді вирішують мою проблему, я обираю цю як її документально підтверджену та найлегшу для мене зрозумілу. Але дякую всім!
bcsteeve

15

Спробуйте цей oneliner:

find -maxdepth 1 -type f | wc -l

Це добре, лише файли та більше нічого :-)
1313

Це пропускає посилання та спеціальні пристрої символів.
ojblass

Усі відповіді тут чудово працюють! Тож спочатку ДЯКУЙТЕ. По-друге ... як мені вибрати?
bcsteeve

6

Спробуйте це

ls -al | grep ^[-] | wc -l
  1. ls -al - список усіх файлів з довгим форматом лістингу
  2. grep ^[-] - пошук рядка, який починається з "-", що є символом для позначення звичайного файлу, коли файл списку з ls -al
  3. wc -l - рахувати рядки

Що про м'які посилання? Що з жорстко пов’язаними файлами?

Хороший один, лише файли та посилання, більше нічого.
1313

Для м'якого / жорсткого посилання заміну замініть -наl
andr3w

Я дуже вдячний за те, що ви його розірвали та пояснили розділи, дякую за працюючу та добре пояснену відповідь!
bcsteeve

2

Я просто хочу додати відповідь свого, тому що мені подобається грати з Башем . Ось це іде:

echo "Directory $(pwd) has $(ls -F |grep -v / | wc -l) files"

Нижче наведено приклад результату мого /dataкаталогу:

Directory /data has 580569 file(s).

І нижче мої пояснення:

  1. echo double-quoted-message надрукує бажане повідомлення.
  2. $(any-desirable-valid-command)всередині подвійного цитованого повідомлення echoзапечатано результат виконання відповідних команд.
  3. pwd буде надрукувати поточний каталог.
  4. ls -Fпризначений для перерахування всіх файлів та додавання індикатора (один із * / => @ |) до записів. Я скопіював це з відповіді Тома .
  5. grep -v /це команда пошуку простого тексту, -v /параметр буде зберігати всі рядки, які не містять косу рису (-ів).
  6. wc -l буде друкувати підрахунок рядків

Я знаю, що цьому питанню 3 роки, я просто не можу стверджувати, що я хочу додати ще одну відповідь.


2

Якщо у вас treeвстановлена ​​система, ви можете використовувати цю команду:

tree -L 1 /path/to/your/directory | tail -n 1

Він показує вам кількість файлів і каталогів у цьому каталозі.

-L n показує глибину пошуку.

Ви можете встановити за treeдопомогою sudo apt-get install tree.


-3

Щоб підрахувати загальну кількість файлів із конкретним розширенням, ви можете ввести:

ls|grep jpg |wc -l
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.