ファイル名の構造は次のとおりですname$timestamp.extension
。
timestamp=`date "+%Y%m%d-%H%M%S"`
したがって、ディレクトリに次のファイルがある場合:
name161214-082211.gz
name161202-082211.gz
name161220-082211.gz
name161203-082211.gz
name161201-082211.gz
答えのコード/スクリプトが実行されたら、値を変数20
に保存する必要があります。highest_day
highest_day = 20
ベストアンサー1
ファイルのタイムスタンプを使用しないと、少し扱いにくいですが、次の方法でこれを行うことができます。
#!/usr/bin/env bash
re="name([0-9]{6})-([0-9]{6})\.gz"
re2="([0-9]{2})([0-9]{2})([0-9]{2})"
for file in *.gz
do
if [[ "$file" =~ $re ]]
then
# BASH_REMATCH[n] on filename where n:
# [1] is date ie. 161202
# [2] is time ie. 082211
date=${BASH_REMATCH[1]}
# BASH_REMATCH[n] on date string where n:
# [1] is year ie. 16
# [2] is month ie. 12
# [3] is day ie. 02
[[ $date =~ $re2 ]] && day=${BASH_REMATCH[3]}
# Keep max day value
[[ $day > $highest_day ]] && highest_day=$day
fi
done
echo $highest_day