Bash globで結果を1つだけ選択できますか?

Bash globで結果を1つだけ選択できますか?

いくつかの出力レポートを自動化するスクリプトを作成しようとしています。ログファイル(現在および将来の「標準化」予定)は、次のパス構造に保存されます。

/<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]}"

おすすめ記事