Рекурсивно добавьте файлы шаблоном

Как я рекурсивно добавляю файлы шаблоном (или шарик) расположенный в различных каталогах?

Например, я хотел бы добавить A/B/C/foo.java и D/E/F/bar.java (и несколько других файлов Java) с одной командой:

git add '*.java'

К сожалению, это не работает как ожидалось.

158
задан Michel Krämer 18 May 2010 в 07:11
поделиться

3 ответа

Ответ Серджио Акосты, вероятно, ваш лучший выбор, если некоторые из добавляемых файлов еще не отслеживаются. Если вы хотите ограничиться файлами, о которых git уже знает, вы можете объединить git-ls-files с фильтром:

git ls-files [path] | grep '\.java$' | xargs git add

Git не предоставляет каких-либо причудливых механизмов для этого, так как это в основном проблема оболочки: как получить список файлов для предоставления в качестве аргументов для данной команды.

82
ответ дан 23 November 2019 в 21:39
поделиться

Немного не по теме (не относящееся конкретно к git), но если вы используете linux / unix, обходной путь может быть следующим:

find . -name '*.java' | xargs git add

И если вы ожидаете пути с пробелами:

find . -name '*.java' -print0 | xargs -0 git add

Но я знаю, что это не совсем то, что вы просили.

54
ответ дан 23 November 2019 в 21:39
поделиться

С помощью zsh вы можете выполнить:

git add "**/*.java"

и все ваши *.java файлы будут добавлены рекурсивно.

52
ответ дан 23 November 2019 в 21:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: