Как посчитать количество файлов в каталоге, но не рекурсивно


30

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

Ответы:


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

Список всего, кроме каталогов.
Thom

Я очень благодарен вам за то, что вы разбили его и объяснили разделы, спасибо за рабочий и хорошо объясненный ответ!
bcsteeve

1
В то время как все ответы решают мою проблему, я выбираю этот как документированный и легкий для понимания. Но спасибо всем!
bcsteeve

15

Попробуйте это oneliner:

find -maxdepth 1 -type f | wc -l

Это хорошо, только файлы и ничего больше :-)
Thom

Это пропускает ссылки и специальные символьные устройства.
ojblass

Все ответы здесь работают отлично! Итак, во-первых, СПАСИБО. Второе ... как мне выбрать?
bcsteeve

6

Попробуй это

ls -al | grep ^[-] | wc -l
  1. ls -al - вывести список всех файлов с длинным форматом списка
  2. grep ^[-] - поиск строки, начинающейся с «-», то есть символа для обозначения обычного файла, когда список файлов с помощью ls -al
  3. wc -l - считать строки

А как насчет мягких ссылок? Как насчет жестко связанных файлов?

Хороший, только файлы и ссылки, больше ничего.
Thom

Для мягких / жестких ссылок замените -наl
andr3w

Я очень благодарен вам за то, что вы разбили его и объяснили разделы, спасибо за рабочий и хорошо объясненный ответ!
bcsteeve

2

Я просто хочу добавить ответ Тома, потому что мне нравится играть с Bash . Здесь это идет:

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.