7

Я хочу написать shell script или alias чтобы найти количество различных типов файлов в каталоге. Например, пример вывода скрипта должен быть:

*.h      20
*.c      40
*.cpp    10
Makefile 3

1 ответ1

8
find . -type f -name '*.*' -exec sh -c 'echo ${0##*.}' {} \; | sort | uniq -c | sort -nr

echo ${0##*.} Дает вам расширение файла. Мы передаем выходные данные для sort а затем подсчитываем уникальные строки с помощью uniq .

Некоторые дополнения:

  • Поскольку выходные данные uniq не сортируются в соответствии с количеством вхождений, вам придется снова преобразовать в числовую сортировку (-nr), если вы хотите, чтобы она была отсортирована.
  • Если вы хотите искать только в своем текущем каталоге, добавьте -maxdepth 1 к вашей команде find .
  • Передайте в awk '{print $2, $1}' чтобы показать количество после расширений.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .