Назад | Перейти на главную страницу

Как ограничить "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?

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

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

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

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

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

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

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

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

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

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

--name-only HEAD | grep ".css" | while...