Как создать сценарий оболочки для рекурсивного сканирования каталога и добавления определенных файлов на основе их шаблонов имен в Git? - PullRequest
0 голосов
/ 30 марта 2020

Как создать сценарий оболочки для рекурсивного сканирования клонированного каталога Git и удаления определенных файлов на основе их шаблонов имен? Если файл соответствует какому-либо из указанных ниже условий,

  1. длина имени файла превышает 150 символов. Я не против, чтобы скрипт включал или исключал расширение. Мне не нужна такая большая точность. Достаточно приблизительное число ~ 150.
  2. Файл содержит : (двоеточие) в имени файла.

Если какой-либо файл соответствует, он должно быть выполнено с git rm </path/to/file/file name>

Заранее спасибо.

1 Ответ

4 голосов
/ 31 марта 2020

Используйте find для сканирования:

find . -regextype egrep \( -name .git -prune \) -o \
       \( -type f -regex '.*(:[^/]*|[^/]{151,})$' -exec git rm '{}' \+ \)

(сначала выполните dry без бита -exec, чтобы убедиться, что он работает, как нужно, конечно)

Примечание: здесь предполагается, что GNU find, так как вы пометили вопрос linux.

. Это говорит find пропускать любые подкаталоги .git и все другие обычные файлы в дереве каталогов, если последний разделенный / компонент (имя файла + расширение, если есть) содержит двоеточие или 151 или более символов, передайте его git rm.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...