Как найти количество файлов с расширением

Обновлено: 06.07.2024

В целях тестирования я хотел бы подсчитать, сколько файлов изображений находится в каталоге, отделяя каждый тип файла изображения по расширению (jpg = "yes". Это потому, что позже это будет полезно для другого сценария, который будет выполнять действие на каждое расширение файла). Могу ли я использовать что-то вроде следующего только для файлов JPEG?

Учитывая расширения файлов jpg, png, bmp, raw и другие, я должен использовать while цикл, чтобы сделать это?

Я бы предложил другой подход, избегая возможных проблем разделения слов ls

Вы можете зациклить files массив с любыми другими командами, которые вы хотите выполнить для файлов каждого конкретного расширения.

Более переносимо - или для оболочек, которые не предоставляют массивы явно - вы можете повторно использовать массив позиционных параметров оболочки, т.е.

Мой подход будет следующим:

  1. Список всех файлов в каталоге
  2. Распакуйте их расширение
  3. Сортировать результат
  4. Подсчитайте вхождения каждого расширения

Вроде как (последний awk вызов только для форматирования):

(предполагается, что GNU ls здесь для -U опции, чтобы пропустить сортировку как оптимизацию. Она может быть безопасно удалена без ущерба для функциональности, если не поддерживается).

ммм . позже я должен отфильтровать каждое найденное расширение для выполнения действия для него? Это зависит от того, что вы хотите сделать в конце концов. Можете ли вы дать больше информации? Моя цель: скрипт, который обрабатывает каждый файл расширения (только файл изображения), изменяя размер от введенных пользовательских данных. Итак, я начинаю с того, сколько там файлов jpg, следующего png и т. Д. Решение SteelDrivers может быть более подходящим, чем. У меня были JPG и jpg файлы, и файлы, и я хотел их рекурсивно, поэтому мое решение было написать find . -type f | awk -F . '' | sort | uniq -c | awk ''

Это рекурсивно обходит файлы и подсчитывает соответствующие расширения:

Насколько хорошо это решение работает с путевыми именами, содержащими пробелы? Newlines? find по умолчанию используется текущий каталог, как я это использую. Я не думаю, что Бог хотел, чтобы в именах файлов были пробелы, но в этом случае это прекрасно работает. Если у вас есть переводы строк, то вы заслуживаете всего, что получаете. Я подумал об объяснении, но решил, что ответ будет слишком длинным, думаю, важна простота. 99% случаев в 1% случаев. Это, вероятно, версия 7 совместима.

Может быть, это может стать короче

Все, что связано ls , может привести к неожиданным результатам со специальными символами (пробел и другие символы). Любой bashism (как массивы) не переносим. Все, что связано while read , обычно идет медленно.

С другой стороны, find он ОЧЕНЬ гибок (множество опций для фильтрации), имеет [как минимум] два синтаксиса, которые отказоустойчивы для специальных символов . и хорошо масштабируется в больших каталогах.

В этом примере я использовал -iname совпадение с расширением в верхнем и нижнем регистре. Я также ограничил -maxdepth 1 соблюдение вашего вопроса "в текущем каталоге". Вместо подсчета количества строк, где имена файлов могут включать в себя CR / LF, -print0 будет печататься байт NULL в конце каждого имени файла . так же | tr -d -c "\000" | wc -l как и точный подсчет файлов (NULL байт!).

PS -print0 | tr -d -c "\000" | wc -c можно заменить на -printf "\000" | wc -c или даже -printf '\n' | wc -l .

Ищу приложение для следующей задачи: нужно узнать количество файлов в определённом каталоге по расширениям. Например: mp4 - столько, flac - столько. На крайний случай можно и в консоли, но хотелось бы посмотреть список файлов с путями, возможно удалить и т.п. Также хотелось бы увидеть список файлов с наибольшим размером. Тоесть нужно приложение для просмотра статистики файлов.

Изображение пользователя lord_i.

Если это делать по очереди для каждого расширения то вполне подойдет "выделить группу" по маске в крузадере или каком-то другом файловом менеджере. Если Вам нужна статистика одновременно для всех расширений - думаю надо скрипт писать.

Если это делать по очереди для каждого расширения
Эдак я в любом файловом менеджере могу сделать. Я хочу комплексно подойти к вопросу =)

Нашел вот это, но, к сожалению, не работает (скрипт bash). Думается, местные гуру подскажут где вкралась ошибка.

5. Как узнать сколько файлов с каким расширением находятся в папке:
find /target/folder -type f | sed -r ‘s/^.*\.([^.]+)$/\1/’ | tr “[:upper:]” “[:lower:]” | awk ‘ < ext[$1]++ >END < for (e in ext) print ext[e], e >’ | sort -nr|head -n 20
find /target/folder -type f – выбираем все файлы из заданной папки
sed -r ‘s/^.*\.([^.]+)$/\1/’ | tr “[:upper:]” “[:lower:]“ – из списка их имен формируем список всех расширений
awk ‘ < ext[$1]++ >END < for (e in ext) print ext[e], e >’ – производим подсчет всех расширений
sort -nr|head -n 20 – выводим первые двадцать позиций из отсортированного списка расширений, в порядке убывания найденных с таким определением файлов

Оригинал здесь
Также хотелось бы увидеть список файлов с наибольшим размером. Тоесть нужно приложение для просмотра статистики файлов
В Крусайдере жмем Alt+Стрелка вниз, выбираем панель статистики, там можно посмотреть крупные файлы и кучу всего прочего.

В Крусайдере жмем Alt+Стрелка вниз, выбираем панель статистики, там можно посмотреть крупные файлы и кучу всего прочего.
То что нужно по части размеров. Вот если бы ещё отдельно от крусайдера… Такую бы штуку по части расширений…


Посчитать количество файлов с разрешением .txt и вывести их имена в лог
Здравствуйте. как посчитать количество файлов с разрешениями .txt а папке и что бы в лог.

Вывести количество и объем файлов, входящих в папку, кроме системных и скрытых
Добрый день, нужна Ваша помощь. Дали задание:Пользователь задает путь к папке (возможно сетевой).

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

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

Ищет все файлы с расширением .rar на указанных дисках и выводит в файл log.txt на рабочий стол в формате "полный путь к файлу размер в Кб":
GnomBober, встроенные команды — это сразу мимо с учётом прерываний на "Имя папки . слишком длинно." и т. п. Лучше держать запущенной Everything и моментально вытаскивать результаты с помощью es:
Только сейчас внимательно прочитал. Исправленный вариант:

Добавлено через 9 минут
Ищет почему то только на том диске откуда запустил видимо, в лог выносит только диск Ц.

Добавлено через 3 минуты
Простите просто не было той буквы под которой создан диск) допишу все возможные варианты букв дисков и всё будет работать)

Я дал наипростейший и наибыстрейший вариант по всем проиндексированным дискам (Everything все диски в работе сам шерстит). как выбрать несколько форматов rar+zip+ещё что то по нескольким форматам что бы отработать сразу? Здесь вопрос. Несколько форматов нужно считать как единое целое или в разрезе каждого формата? А можно вариант как в общей массе(sql+bak файлы) или как(rar+zip+exe допустим) и так же как в разрезе, сам пока не знаю какой вариант подойдёт)) Я сейчас продублировал строку с rar и заменил её zip
Теперь в выводе такой формат
files *.rar - 10 items. disk C size 35.72 Mb
files *.zip - 29 items. disk C size 230.44 Mb
files *.zip - 1 items. disk Y size 0.02 Mb
что очень даже не плохо)
а есть возможность если мне нужно отработать более чем 2 формата, не писать новые строки а выполнить(внести все нужные форматы в строку выполнения) Можно, но текущий скрипт посчитает все в кучу. Поэтому и говорю определитесь в каком виде хотите видеть информацию GnomBober, тогда ждите до завтра, время на работе свободное будет - набросаю Огромное спасибо, буду ждать, огромное спасибо за уже проделанную работу! Поскольку ТС никак не реагирует, делюсь примером с теми, кому окажется полезным:
Общее число файлов: 10262
Общий размер в байтах: 9748097632004

Добавлено через 10 минут
Всё работает прекрасно , изменил с МБ на ГБ что бы числа были приятней глазу) когда обьём большой очень сильно режет взор числа вида 8917498.123132мб)
Вот такой формат на выходе получил)
format *.zip - 29 files. size C:\ - 0.22 Gb
format *.rar - 10 files. size C:\ - 0.03 Gb


Как посчитать количество файлов в папке и создать соответствующее количество UserControl?
Есть программа, которая по нажатию кнопки должна посчитать количество файлов xml в папке и создать.


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

Посчитать количество файлов рекурсивно
напишите, пожалуйста, bat-файл, который бы выводил количество файлов в заданной папке, включая.

Итак, SSH клиент задорно мигнул и представил моему взору голую консоль бзди. Вообще, у нас на работе всеми животными (linux’ами) и адскими созданиями (freebsd) рулит Lord_of_fear. Я знал, что lord непременно знает ответ на мучивший меня вопрос, но решил попытаться дойти до решения самостоятельно. Сначала я думал, что мою скромную потребность может удовлетворить команда ls. Тыкал и так и сяк, но, то, что мне, было, нужно не нашел. Почему я подумал на ls? Да потому что с помощью ls выдает список файлов и папок запрашиваемого каталога в разных представлениях. Мне как человеку с отсутствием должного опыта показалось логично, что операция как подсчет файлов полюбас должна быть организована. Увы, я ошибся. Ну, ничего, стал ковырять дальше.

Подсчитать количество файлов в папке Linux с помощью find

Чтобы посчитать количество всех файлов в определенной директории (например /home/captain) возможно использовать команду find и она посчитает количество файлов рекурсивно для всех вложенных папок:

find /home/captain -type f| wc -l

Дабы посчитать количество всех папок в определенной директории (например /home/captain) возможно использовать команду find и она посчитает количество папок рекурсивно для всех вложенных директория:

find /home/captain -type d| wc -l

Хочу отметить следующее, что утилита find трудится хорошо, но очень нагружает сервер, лучше использовать команду ls.

Подсчитать количество файлов в папке применяя ls

Чтобы посчитать количество всех файлов в определенной директории (например /home/captain) возможно так же использовать команду fls и она посчитает количество файлов. Самый простой способ решить эту задачку — использовать утилиту ls вместе с утилитой wc. Они покажут сколько файлов находится в текущей папке:

Когда Вам необходимо подсчитать довольно большое количество (категория, выражающая внешнее, формальное взаимоотношение предметов или их частей, а также свойств, связей: их величину, число, степень проявления того или иного свойства) файлов, данный метод является наиболее быстрым.

Эта команда активирует опцию -a, таким образом . , .. и другие компданные начинающиеся с . , также будут подсчитаны.
Используя команду «find»:

$ find . -type f -maxdepth 1 | wc -l

Рекурсивно подсчитать количество файлов в Linux

Следующая команда рекурсивно считает количество файлов в нынешной директории и всех ее поддиректориях:

$ find . -type f | wc -l

Рекурсивно подсчитать количество папок в Linux

Последующая команда рекурсивно считает количество папок в текущей директории и всех ее поддиректориях:

$ find . -type d | wc -l

Подсчитать количество файлов «определенного типа» в Linux

Следующая команда рекурсивно считает число файлов с расширением «.txt» в текущей директории и всех ее поддиректориях:

$ find . -type f -name "*.txt" | wc -l

В данной небольшой статье мы рассмотрели как посмотреть количество файлов в папке Linux. Как видите, это весьма просто. Надеюсь, эта информация была полезной для вас. Если у вас остались вопросы, спрашивайте в комментах!

Читайте также: