Чтобы создать список уникальных расширений файлов, присутствующих в текущей директории и всех её подпапках, можно использовать комбинацию команд 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 -u:sortсортирует строки, а флаг-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.
Как это работает
find . -type f: Находит все файлы в текущей директории и её подпапках.| sed -n 's/.*\.//p': Извлекает расширение из каждого файла.| sort -u: Сортирует и удаляет дубликаты, чтобы получить список уникальных расширений.| sed 's/^/*./': Добавляет префикс*.к каждому расширению в списке.> extensions.gitignore: Сохраняет окончательный, отформатированный список в файлextensions.gitignore.
После выполнения этой команды в файле extensions.gitignore будет список, который можно использовать в качестве основы для вашего .gitignore.