いくつかの出力レポートを自動化するスクリプトを作成しようとしています。ログファイル(現在および将来の「標準化」予定)は、次のパス構造に保存されます。
/<root_path>/<process_one_path>/logs/<time_date_stamp>/<specific_log_file>
/<root_path>/<process_two_path>/logs/<different_time_date_stamp>/<specific_log_file>
フォルダ内の常に最新のタイムスタンプを除いて、パスのすべての部分が知られています。
タイムスタンプの代わりにワイルドカードを使用しようとすると、次のようないくつかの結果が表示されます。
> ls /<root_path>/<process_two_path>/logs/* [tab]
20130102-175103
20130118-090859
20130305-213506
最新のアイテムだけを返したいです。 Bashでこれは可能ですか?
注(私はzshを持っていません。聞くのは良いですが、仕事で利用できるかどうか疑問です。)
ベストアンサー1
以下はbash 4.2で動作します。
list=( /<root_path>/<process_two_path>/logs/* )
echo "${list[-1]}"
Bashが以前のバージョンの場合:
list=( /<root_path>/<process_two_path>/logs/* )
echo "${list[${#list[@]}-1]}"