Я попробовал кучу ответов здесь, даже самый лучший ответ. Все они не соответствовали тому, что я был конкретно после. Таким образом, помимо последних 12 часов сидения в коде регулярных выражений для нескольких программ, чтения и тестирования этих ответов, я пришел к тому, что работает именно так, как я хочу.
find . -type f -name "*.*" | grep -o -E "\.[^\.]+$" | grep -o -E "[[:alpha:]]{2,16}" | awk '{print tolower($0)}' | sort -u
- Находит все файлы, которые могут иметь расширение.
- Greps только расширение
- Greps для расширений файлов от 2 до 16 символов (просто измените числа, если они не соответствуют вашим потребностям). Это помогает избежать кеширования файлов и системных файлов (системный файл предназначен для поиска в тюрьме).
- Awk для печати расширений в нижнем регистре.
- Сортировка и ввод только уникальных значений. Первоначально я пытался попробовать ответить на awk, но он удвоил бы печать элементов, которые варьировались в зависимости от регистра.
Если вам нужно количество расширений файлов, используйте приведенный ниже код
find . -type f -name "*.*" | grep -o -E "\.[^\.]+$" | grep -o -E "[[:alpha:]]{2,16}" | awk '{print tolower($0)}' | sort | uniq -c | sort -rn
Хотя выполнение этих методов займет некоторое время и, вероятно, не является лучшим способом решения проблемы, они работают.
Обновление:
Для @ alpha_989 длинных расширений файлов возникнет проблема. Это связано с оригинальным регулярным выражением "[[: alpha:]] {3,6}". Я обновил ответ, включив в него регулярное выражение "[[: alpha:]] {2,16}". Однако любой, кто использует этот код, должен знать, что эти числа - это минимальное и максимальное значения того, как долго разрешено расширение для окончательного вывода. Все, что находится за пределами этого диапазона, будет разбито на несколько строк на выходе.
Примечание: Оригинальный пост действительно читал "- Greps для расширений файлов от 3 до 6 символов (просто откорректируйте числа, если они не соответствуют вашим потребностям). Это помогает избежать кеширования файлов и системных файлов (бит системных файлов предназначен для поиска тюрьма). "
Идея: Может быть использовано для поиска расширений файлов определенной длины с помощью:
find . -type f -name "*.*" | grep -o -E "\.[^\.]+$" | grep -o -E "[[:alpha:]]{4,}" | awk '{print tolower($0)}' | sort -u
Где 4 - это длина расширений файла, которую нужно включить, а затем найти также любые расширения, превышающие эту длину.