Я хочу посчитать количество файлов для каждого расширения в каталоге, а также файлов без расширения.
Я перепробовал несколько вариантов, но пока не нашел работающего решения:
find "$folder" -type f | sed 's/.*\.//' | sort | uniq -c
это опция, но не работает, если нет расширения файла. Мне нужно знать, сколько файлов не имеют расширения.Я также попытался найти цикл в массиве, а затем суммировать результаты, но в этот раз этот код выдает необъявленную ошибку переменной, но только за пределами цикла:
declare -a arr arr=() echo ${arr[@]}
Это вызывает необъявленную переменную, а также после завершения цикла поиска.
command-line
find
extension
тракторист
источник
источник
ext = [ f.split('.')[-1] for f in os.listdir('./') ]
Тэтлл сделает его на пару строк короче и, возможно, более питоническимЕсли у вас есть GNU awk, вы можете сделать что-то вроде
т.е. создать / увеличить ассоциативный массив с ключом в последнем
.
отделенном поле или какую-либо произвольную фиксированную строку, например,(none)
если нет расширения.mawk
кажется, не разрешает разделять записи на ноль байтов - вы можете использоватьmawk
с разделителем новой строки по умолчанию, если вы уверены, что вам не нужно иметь дело с символами новой строки в именах файлов:источник
С базовой
/bin/sh
или дажеbash
с задачей может быть немного сложно, но, как вы можете видеть из других ответов, инструменты, которые могут работать с агрегированными данными, могут справиться с такой задачей особенно легко. Одним из таких инструментов будетsqlite
база данных.Самым простым процессом использования
sqlite
базы данных будет создание.csv
файла с двумя полями: имя файла и расширение. Позжеsqlite
можно использовать простое совокупное заявлениеCOUNT()
сGROUP BY ext
для выполнения подсчета файлов на основе расширения поляисточник
files_tb
Я думаю, что на таблицу ссылаются, но столбцы таблицы нигде не определены?printf
делает первый . И SQLite по умолчанию будет обрабатывать первую строку файла CSV как имена столбцов.Использование PowerShell, если это возможно:
или короче, используя псевдонимы:
источник