Заметки программиста

Как создать список расширений файлов

Чтобы создать список уникальных расширений файлов, присутствующих в текущей директории и всех её подпапках, можно использовать комбинацию команд Bash. Этот список полезен для создания основы файла .gitignore

Команда для генерации списка расширений

bash

find . -type f | sed -n 's/.*\.//p' | sort -u

Объяснение команды

  • find . -type f: Начинает поиск файлов (-type f) в текущей директории (.) и её подкаталогах.
  • |: Передаёт результат выполнения предыдущей команды (список найденных файлов) следующей команде.
  • sed -n 's/.*\.//p'sed — это потоковый редактор, который используется для обработки текста.
    • s/.*\.//p: Это регулярное выражение. s означает «заменить».
      • .*\.: Находит все символы (.*) до последней точки (\.) в имени файла.
      • //: Заменяет найденное на пустую строку.
      • p: Выводит только те строки, в которых произошла замена. -n подавляет стандартный вывод sed, чтобы избежать дублирования строк.
  • |: Снова передаёт результат следующей команде.
  • sort -usort сортирует строки, а флаг -u удаляет дубликаты, оставляя только уникальные расширения.

Как сохранить список в файл

Чтобы сохранить полученный список в файл, добавьте в конец команды перенаправление вывода >:

bash

find . -type f | sed -n 's/.*\.//p' | sort -u > extensions.txt

После выполнения этой команды в файле extensions.txt будет находиться список всех уникальных расширений, найденных в проекте. Затем вы сможете проанализировать его и составить список для своего .gitignore.

Как добавить *. в начале строки?

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

Модифицированная команда

bash

find . -type f | sed -n 's/.*\.//p' | sort -u | sed 's/^/*./' > extensions.gitignore

Объяснение добавленных шагов

  • | sed 's/^/*./': Этот дополнительный шаг использует sed для выполнения ещё одной операции замены.
    • s: Обозначает операцию «замены».
    • ^: Символ каретки (^) в регулярных выражениях обозначает начало строки.
    • *.: Текст, на который нужно заменить начало каждой строки. Обратите внимание, что звёздочка (*) не является специальным символом в этой части команды, поэтому её не нужно экранировать.
  • > extensions.gitignore: Вывод всей команды перенаправляется в новый файл с именем extensions.gitignore

Как это работает

  1. find . -type f: Находит все файлы в текущей директории и её подпапках.
  2. | sed -n 's/.*\.//p': Извлекает расширение из каждого файла.
  3. | sort -u: Сортирует и удаляет дубликаты, чтобы получить список уникальных расширений.
  4. | sed 's/^/*./': Добавляет префикс *. к каждому расширению в списке.
  5. > extensions.gitignore: Сохраняет окончательный, отформатированный список в файл extensions.gitignore

После выполнения этой команды в файле extensions.gitignore будет список, который можно использовать в качестве основы для вашего .gitignore.