Как мне ограничить 'git ls-tree' определенными типами файлов?

Мне нужно сгенерировать список всех изображений и файлов css с измененными датами, например, из фиксации.

git ls-tree -r --name-only HEAD | while read filename; do
  echo "$(git log -1 --format="%ad" -- $filename) $filename"
done

Как бы Я изменяю это так, чтобы просто возвращать файлы jpg, gif, png и css?

2
задан 11 July 2019 в 20:07
2 ответа

О, я вижу @Marco - спасибо. Мне и в голову не приходило, что я могу добавить в микс grep, например, эта небольшая модификация сработала хорошо.

--name-only HEAD | grep ".css" | while...
0
ответ дан 3 December 2019 в 13:40

Поскольку вам нужен список всех изображений и файлов css, в идеале вы должны направить свой вывод примерно так:

grep '.gif $ \ | .jpg $ \ | .png $ \ | .css $'

Of конечно, вы можете добавить более подходящие расширения, которые может содержать ваш проект, например .bmp.

Если я попробую ls | grep -i '.gif $ \ | .jpg $ \ | .png $ \ | .css $ ' Я получаю список всех файлов в текущей папке с заданными расширениями.

Давайте подробнее рассмотрим эту команду:

$ гарантирует, что вы не найдете ни одного нежелательного файла, например .css.bak. $ соответствует концу строки.

\ | позволяет указать несколько шаблонов, поэтому вам не нужно вызывать несколько git ls-tree , чтобы получить все list.

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

Шаблоны между одиночными ' обеспечивают точки интерпретируются как точки, а не как «любой символ», как подразумевается в регулярных выражениях.

0
ответ дан 3 December 2019 в 13:40

Теги

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