CircleCI の checkout などで Git からチェックアウトしたファイルのタイムスタンプは元のファイルのタイムスタンプが維持されずチェックアウトした日時になってしまいます。
そのため、最も最近に更新されたファイルパスを得ることが次のコマンドで出来ません。
# カレントディレクトリの *.txt ファイルの内最も新しいタイムスタンプを持つファイルパスを得る
ls -1t *.txt | head -1
そこで、このコマンドを実行する前に次のスクリプトで Git に記録されているタイムスタンプを各ファイルにセットしてあげます。
git-timestamp.sh
for FILE in $(git ls-files)
do
TIME=$(git log --pretty=format:%cd -n 1 --date=iso -- "$FILE")
TIME=$(date -d "$TIME" +%Y%m%d%H%M.%S)
touch -m -t "$TIME" "$FILE"
done
このスクリプトを用意したら、次のようにすれば最も最近に更新されたファイルパスを得ることが出来ます。
$ bash ./git-timestamp.sh;
$ LAST_MODIFIED_FILEPATH="`ls -1t *.txt | head -1`";