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

Решение состоит в использовании

bash:~/src/edk2$ source edksetup.sh

bash:~/src/edk2$ build

. Эффект команды экспорта внутри edksetup.sh не отражается в основной оболочке bash, а скорее в суб-оболочке, порожденной для ее выполнения. «source» направляет его на запуск скрипта в текущей оболочке.

1
задан 13 April 2017 в 15:24

5 ответов

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

find -maxdepth 1 -type f | wc -l
11
ответ дан 24 May 2018 в 15:44
  • 1
    Это хорошо, только файлы и ничего больше :-) – thom 4 November 2013 в 05:55
  • 2
    Это пропускает ссылки и специальные устройства символов. – ojblass 4 November 2013 в 06:48
  • 3
    Все ответы здесь отлично работают! Итак, сначала, СПАСИБО. Второй ... как мне выбрать? – bcsteeve 4 November 2013 в 07:09

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

ls -al | grep ^[-] | wc -l
ls -al - перечислите весь файл с длинным листинговым форматом grep ^[-] - найдите строку, которая начинается с символа «-», который обозначает символ для обычного файла в списке файл с ls -al wc -l - подсчет строк
5
ответ дан 24 May 2018 в 15:44
  • 1
    Что относительно мягких ссылок? Как насчет жестко связанных файлов? – user 4 November 2013 в 05:23
  • 2
    Что относительно мягких ссылок? Как насчет жестко связанных файлов? – user 4 November 2013 в 05:23
  • 3
    Что относительно мягких ссылок? Как насчет жестко связанных файлов? – user 4 November 2013 в 05:23
  • 4
    Что относительно мягких ссылок? Как насчет жестко связанных файлов? – user 4 November 2013 в 05:23
  • 5
    Что относительно мягких ссылок? Как насчет жестко связанных файлов? – user 4 November 2013 в 05:23
  • 6
    Что относительно мягких ссылок? Как насчет жестко связанных файлов? – user 4 November 2013 в 05:23
  • 7
    Хороший, только файлы и ссылки, ничего больше. – thom 4 November 2013 в 05:58
  • 8
    Для мягкой / жесткой ссылки замените - на l – andr3w 4 November 2013 в 06:05
  • 9
    Я очень признателен, что вы разобрались и объяснили разделы, спасибо за рабочий и хорошо объясненный ответ! – bcsteeve 4 November 2013 в 07:11

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

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

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

Directory /data has 580569 file(s).

И ниже приведены мои объяснения:

echo double-quoted-message напечатает желаемое сообщение. $(any-desirable-valid-command) внутри сообщения с двойным кавычком echo напечатает результат выполнения соответствующей команды. pwd распечатает текущий каталог. ls -F предназначен для перечисления всех файлов и добавления индикатора (одного из * / => @ |) в записи. Я скопировал это из ответа Тома. grep -v / - это команда поиска обычного текста, параметр -v / будет содержать все строки, которые не содержат косой черты (sash). wc -l распечатает подсчет строк.

Я знаю, что этот вопрос составляет 3 года, я просто не могу сдержать желание добавить еще один ответ.

2
ответ дан 24 May 2018 в 15:44

Если у вас есть tree, установленный в вашей системе, вы можете использовать эту команду:

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

Показывает количество файлов и каталогов в этом каталоге.

[ f3] показывает глубину поиска.

Вы можете установить tree с помощью sudo apt-get install tree.

2
ответ дан 24 May 2018 в 15:44

Чтобы подсчитать общее количество файлов с определенным расширением, вы можете ввести:

ls|grep jpg |wc -l
-3
ответ дан 24 May 2018 в 15:44

Другие вопросы по тегам:

Похожие вопросы: