Используйте 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
.