Комбинируя ответ Хьюго ( 1 ) с информацией, найденной здесь ( 2 ), и подбрасывая немного sed
, я получил это:
alias newest="find . -path ./.git -prune -o -type f -exec stat -c \"%y %n\" '{}' + | sort -r | head -1 | sed s#'.*\./'##"
GIT_AUTHOR_DATE="$(newest | xargs date -u -r)" GIT_COMMITTER_DATE="$(newest | xargs date -u -r)" git commit -m "Old sources retaining old change-dates of last changed file: $(newest), actual commit date: $(date)"
Основное отличие состоит в том, что эта версия выполняет рекурсивный поиск, поэтому вы получаете последний файл в любом месте дерева - хотя он намеренно пропускает каталог .git.
Вы, конечно, можете захотеть удалить одну из переменных даты здесь, и я использую довольно свежую версию bash (4.2.37 (1) -релиз), поэтому нотация $ () может не работать для Вы (просто замените его обратными чертами (`) вместо этого).