Форум программистов, компьютерный форум, киберфорум
Shell, Bash
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.81/47: Рейтинг темы: голосов - 47, средняя оценка - 4.81
1 / 1 / 0
Регистрация: 23.09.2017
Сообщений: 5
1

Подсчет количества файлов в каждом подкаталоге

26.11.2017, 19:54. Показов 9611. Ответов 1

Author24 — интернет-сервис помощи студентам
Доброго времени суток! Подскажите пожалуйста, как написать скрипт который бы подсчитывал количество файлов в каждом
подкаталоге начиная с указанного каталога. Заранее спасибо!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.11.2017, 19:54
Ответы с готовыми решениями:

Команда должна создать в каждом подкаталоге файл со списком файлов
Добрый день. Нужна помощь в составлении shell команды. Задача такова: в определенном каталоге...

Подсчет количества файлов заданного типа
Доброго времени суток! У меня такая проблемка: как подсчитать количество файлов заданного типа...

Подсчет количества файлов, содержащих текст на языке С
Здравтсвуйте Собственно вопрос в название темы. Пытался скормить вывод команды ls команде file,...

Скрипты Linux, удаление файлов из каталога, подсчет файлов в каталоге
С linux столкнулась не по своей воле, но приходиться изучать, я совсершенно еще зеленая в...

1
4527 / 3521 / 358
Регистрация: 12.03.2013
Сообщений: 6,038
27.11.2017, 01:40 2
Число файлов в заданной директории можно найти с помощью find, если ограничить глубину поиска единицей. Например, в текущей директории:
Bash
1
find . -maxdepth 1 -type f | wc -l
find находит файлы и выводит по строкам, wc считает строки. Этот способ не работает, если в именах файлов есть перевод строки.

Теперь мы хотим вызвать нечто подобное для всех поддиректорий, рекурсивно. Все поддиректории опять же можно найти с помощью find, и для каждой из них можно вызвать программу с помощью опции -exec. Однако мы в данном случае хотим вызвать не одну программу, а пайп из двух. Для этого нам придётся для каждой найденной директории вызывать шелл, который будет исполнять пайп.

Bash
1
find . -type d -exec sh -c "echo -n 'Директория {}: '; find \"{}\" -maxdepth 1 -type f | wc -l" \;
Вывод будет строчками типа «Директория такая-то: число». Я добавил слово «Директория», потому что если бы его не было, а имя начиналось бы с дефиса, то echo решило бы, что это опция.

Другой способ посчитать число файлов в директории ― собрать их все в массив (если шелл поддерживает массивы) и напечатать его длину. Сделаем так для zsh. Что характерно, в zsh можно обойтись встроенными функциями, внешние процессы вызывать не приходится.
Bash
1
2
3
4
for d in **/*(/); do
    fs=($d/*(.N))
    print -- $d ${#fs}
done
Глоб ** ищет рекурсивно (это благодаря ему пользователям zsh практически не бывает нужен find). Флаг / в скобках после глоба говорит, что нужны только директории. В следующем глобе два флага: . ищет только файлы, N блокирует ошибку, если совпадений нет. В zsh обычно можно не писать кавычки при раскрытии переменных.
0
27.11.2017, 01:40
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.11.2017, 01:40
Помогаю со студенческими работами здесь

Подсчет количества ключевых слов
Есть задание: вывести строки, содержащие четное количество ключевых слов. Подскажите, пожалуйста,...

Подсчет количества вершин на каждом уровне дерева
В общем я написал функцию, но что-то он считает неверно. Не могли бы вы мне помочь разобраться? ...

Подсчет количества нечетных элементов в каждом столбце матрицы
Привет, Помогите пожайлуста составить программу дана матрица 5х5.Составить программу для подсчета...

Подсчет количества символов в каждом слове предложения с 7 слов
Здравствуйте! Пожалуйста помогите с написанием программы на bc++ 3.11 программы которая выполняла...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru