Мне нужно создать список всех изображений и файлов 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...