У нас есть набор каталогов, содержащих индексы Lucene. Каждый индекс представляет собой смесь различных типов файлов (различающихся по расширению), например:
0/index/_2z6.frq
0/index/_2z6.fnm
..
1/index/_1sq.frq
1/index/_1sq.fnm
..
(это около 10 разных расширений)
Мы хотели бы получить общее по расширению файла, например:
.frq 21234
.fnm 34757
..
Я пробовал различные комбинации du / awk / xargs, но мне было сложно сделать именно это.
filesystems
shell
disk-space-utilization
barnybug
источник
источник
Ответы:
Для любого данного расширения вы используете
чтобы получить общий размер файла для этого типа.
И после некоторого размышления
Который будет выводить размер в байтах каждого найденного типа файла.
источник
-iname
чтобы сделать поиск расширений файлов нечувствительным к регистру.С bash version4 вам просто нужно позвонить
find
,ls
аawk
не обязательно:источник
read name size
кread size name
и-printf "%f\t%s\n"
к-printf "%s\t%f\n"
должны это исправить.if [ "$name" == "$ext" ]; then ext="*no_extension*"; fi
после,ext=${name##*.}
если вам нужно предотвратить это. Это поместит все файлы без расширения в*no_extension*
группу (я использую,*no_extension*
потому что*
это не правильный символ в имени файла)Каждый второй столбец разделен на
.
и последняя часть (расширение) сохранена в массиве.тогда вы получите общий размер каждого расширения в байтах.
источник
Расширение на сценарий Iain с более быстрой версией для работы с большим количеством файлов.
источник
Это решение:
Решение, изначально опубликованное в этом сообщении: получите все расширения и их количество файлов в каталоге
источник
Я решил использовать эти две команды:
источник
мой вариант ответа на вопрос:
источник
Попробуйте Crab ( http://etia.co.uk/ ) - это утилита командной строки, которая позволяет запрашивать файловую систему с помощью SQL.
источник