В Perl символ может повторяться несколько раз с помощью оператора x
:
$ perl -e 'print "#" x 10, "\n"'
##########
Давайте воспользуемся этим.
Вместо разбора выводаfind
:
find. -type f -exec file -b {} + | sort | uniq -c | sort -rn |
perl -ne 'chomp; s/\s+(\d+)\s+// && printf("%-3d %-50s: %s\n", $1, $_, "#" x $1)'
Первая часть, вплоть до Perl-скрипта, будет выводить примерно так
23 ASCII C program text
12 ASCII text
10 ELF 64-bit LSB relocatable, x86-64, version 1
3 ASCII English text
1 ELF 64-bit LSB shared object, x86-64, version 1
Сценарий Perl удалит завершающую новую строку с chomp
, а затем выберет число в $1
. Затем он использует printf()
для вывода числа, типа файла и столько символов #
, сколько указано числом.
Конечный результат будет примерно таким:
23 ASCII C program text : #######################
12 ASCII text : ############
10 ELF 64-bit LSB relocatable, x86-64, version 1 : ##########
3 ASCII English text : ###
1 ELF 64-bit LSB shared object, x86-64, version 1 : #