番号が最も高いファイル名を選択してください。

番号が最も高いファイル名を選択してください。

次の日付ファイルのリストがあります...

filename_20120101.dat
filename_20120102.dat
filename_20120103.dat

ファイル名の日付(ファイルの日付スタンプではない)に基づいて最新のファイルを選択するスクリプトが必要です。

ベストアンサー1

zsh強制回答:

echo "The highest-numbered file is" filename_*.dat([-1])

これはグローバル予選 [NUM]NUM番目の一致のみが保持されます(負の値は最後の一致から計算されます)。幅が異なる場合は、n修飾子を追加してください。

% ls
filename_1.dat filename_12.dat filename_17.dat filename_2.dat filename_8.dat
% echo filename_*.dat([-1])
filename_8.dat
% echo filename_*.dat(n[-1])
filename_17.dat

ワイルドカードは単語リストを探している状況でのみ発生するため、変数にファイル名を割り当てるには、変数を1つの要素を持つ配列に設定する必要があります。

latest=( filename_*.dat([-1]) )
echo "The highest-numbered file is $latest"

すべてのシェルで完全一致リストの位置引数を設定し、最後の引数を保持できます。

set_latest () {
  eval "latest=\${$#}"
}
set_latest filename_*.dat
echo "The highest-numbered file is $latest"

filename_10.datis after がfilename_09.datbefore のように、数値順ではなくアルファベット順で最後の項目を返すことに注意してくださいfilename_9.dat

おすすめ記事