Как получить счет всех расширений файлов на жестком диске с помощью терминала gnu + linux?

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

Как это сделать в терминале на gnu + linux?

2 Solutions collect form web for “Как получить счет всех расширений файлов на жестком диске с помощью терминала gnu + linux?”

find /filesystem -xdev -type f -name '?*.*' -print0 | awk -F. -vRS='\0' ' {c[$NF]++}; END{for (i in c) print c[i],i}' | sort -rn | less 

Где /filesytem – точка монтирования файловой системы, в которую вы хотите посмотреть.

Философия unix заключается в предоставлении строительных блоков и позволяет собирать эти строительные блоки для выполнения специализированных задач, таких как эта.

Команда find перемещает дерево каталогов и отображает файлы, соответствующие определенным критериям, или действует на них. Например, find -xdev / traverses все файлы в корневой файловой системе и отобразите их имя. Опция -xdev опускает файлы на другие файловые системы, такие как сетевые подключения, специальные файловые системы, которые предоставляют системную информацию и т. Д.

Чтобы выбрать то, что напечатано, GNU find предлагает действие -printf . Директива %f печатает имена файлов без части каталога.

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

 find / -xdev ! -name $'*\n*' -printf '%f\n' 

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

 find / -xdev -name '?*.*' ! -name $'*\n*' -type f -printf '%f\n' 

Достаточно find . Чтобы работать с расширениями, мы будем использовать инструменты обработки текста, используя конвейер оболочки для их объединения. Сначала sed, чтобы немного переписать, чтобы исключить часть имени файла, которая не является расширением:

 find / -xdev -name '?*.*' ! -name $'*\n*' -type f -printf '%f\n' | sed 's/.*\.//' 

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

 find / -xdev -name '?*.*' ! -name $'*\n*' -type f -printf '%f\n' | sed 's/.*\.//' | sort | uniq -c | sort -n 
  • Удалите 50GB самых старых файлов в busybox, когда используемая емкость достигает 95%
  • Samba разрешает доступ к файлам файлов - пользователи не могут открывать файлы, которые я создаю
  • Как найти файлы с длинной первой строкой?
  • тщательно найти все ссылки (жесткие и символические ссылки и любую их комбинацию), приводящую к файлу / директорию
  • Выберите файл на основе количества строк и обработайте результат
  • Почему Debian предпочитает временный файл, заменяющий оригинал на изменение байтов в исходном файле?
  • Как я могу перенаправить вывод в файл, когда программа построена с помощью библиотеки ncurses
  • Какие символы действительны для использования в именах файлов?
  • Легкий способ копирования строк из одного файла в другой
  • В Emacs, как мне проверить, что было изменено в буфере (перед сохранением и перезаписью файла)?
  • Расширения файлов для сценариев unix shell
  • Interesting Posts

    настройка пароля для входа в систему Fedora 20

    Почему $ TERM var равен linux с виртуальными терминалами

    Разрешение имен не работает, но nslookup делает

    Как я могу использовать «emulate sh» в zsh для работы с ». myscript.sh»?

    Как установить драйвер камеры из файла ac и что делает этот драйвер?

    Как получить потоп, чтобы открывать видео с помощью mpv и папок с помощью рейнджера?

    Реверс консоли Linux отличается низкой контрастностью

    Зачем учиться C вообще?

    Ошибка шрифта в приложениях Java в Arch Linux

    Разберите файл txt на основе определенного разделителя и затем преобразуйте его в файл CSV

    Отдельные сообщения нескольких sshds в syslog-ng

    Как начать программирование ядра с самого начала?

    Где я могу узнать больше о том, как использовать команду GRUB `ntldr` (модуль?)

    GNU find – опция time и летнее время

    Установка переменных среды с помощью .bash_profile: работает только последний экспорт

    Linux и Unix - лучшая ОС в мире.