ディレクトリ内の最新のファイルにアクセスする(アルファベット順にソート)

ディレクトリ内の最新のファイルにアクセスする(アルファベット順にソート)

タイムスタンプの前に自動生成されたファイルがいっぱいのディレクトリにあるファイルを開くためにコマンドラインでvimを使用しようとしています。私の頭の中のタイムスタンプがわからないので、ディレクトリで最新のタイムスタンプ(アルファベット順リストの最後のタイムスタンプ)を開きたいと思います。

vim ./my_dir/<last_item>

これを行う方法はありますか?

ベストアンサー1

これは実際にzshの仕事です。

vim my_dir/*(om[1])

括弧内のビットはグローバル予選。たとえば、以前の*一般的なglobパターンは、ログファイルのみを考慮したい場合は、*.log.globo修飾子を使用して一致のソート順を変更できます。omつまり、修正時刻に基づいて最新の項目からソートします。 glob[修飾子は、部分一致のみが返されることを意味します。つまり、[1]最初の一致が返され、次[2,4]の3つの一致が返され、[-2,-1]最後の2つの一致が返される式です。ファイル名がタイムスタンプで始まるだけで*([1])十分です。

他のシェルでは、最新のファイルを選択する良い方法はありません。ファイル名に印刷できない文字や改行文字が含まれていない場合は、以下を使用できます。

vim "$(ls -t mydir | head -n 1)"

名前に基づいて最初または最後のファイルを選択したい場合は、コマンドラインでは少し冗長ですが、スクリプトでは完全に使用できる完全に安定した移植可能な方法があります。

set -- mydir/*
first_file_name=$1
eval "last_file_name=\${$#}"

おすすめ記事