ls -lrt出力の最後のファイルを分類する1行のコマンドですか? [コピー]

ls -lrt出力の最後のファイルを分類する1行のコマンドですか? [コピー]

システムログファイルはシリアル化されており、ls -lrtそれを使用して最新のファイルを表示します。それから私のcatファイル。これを行うには、毎回長いシリアル番号を入力する必要があります。

1つのコマンドでcat最後のファイルを出力に表示するには?ls -lrt

私はcygwinを使用しており、出力はls -lrt foobar_job*次のようになります。

-

-rw-r--r-- 1 zundarz Domain Users   1133 Jul 31 16:54 foobar_job4855125.log
-rw-r--r-- 1 zundarz Domain Users   1256 Jul 31 17:10 foobar_job4855127.log
-rw-r--r-- 1 zundarz Domain Users   1389 Aug 11 10:20 foobar_job4887829.log
-rw-r--r-- 1 zundarz Domain Users   1228 Aug 11 10:39 foobar_job4887834.log

答え1

catコマンドに最新のファイルだけが必要な場合は、-lこのオプションは実際には必要ありません。有効にすると、LinuxオプションをCygwin使用して解析を簡単に作成できます-1

$ cat "$(ls -1rt | tail -n1)"

-1携帯性がとても良いはずです。POSIX

また覚えておいてください解析ls出力には欠点があります。

編集する:

正しく指摘したようにコメントの投稿者:don_crisstiあなたは必要ありません-1

 $ cat "$(ls -rt | tail -n1)"

答え2

この方法は高精度ではありませんが、ほとんどの場合に機能します。cat "$(ls -1t | head -n1)"

答え3

私のシステムでこれを試しました。

~$ cat "$(ls -lrt | tail -n 1 | tr -s ' ' | cut -d ' ' -f9-)"

すでに作業中です。

ls -lrt

-t変更時間()に基づいて逆順()でソートされたファイルを提供します-r

tail -n 1

最後の出力行を提供します。

tr -s ''

行から重複したスペースを削除します。

cut -d ' ' -f9-

各スペースの行を切り取り、ファイル名の9番目のフィールドを入力します。追加する-と、-f9スペースを含むファイル名に重要な次のフィールドもすべて提供されます。

ニックネーム

コマンドをエイリアスとして使用するには、文字をエスケープする必要があります"

ファイルにはスペースを含めることができるため、コマンド"に ' が必要です。cat"

このマークから脱出することも必要です$。それ以外の場合は、エイリアスが呼び出されるたびに内部コマンドが実行され$(...)ず、エイリアスが設定されたときに一度実行されます。

alias catrec="cat \"\$(ls -lrt | tail -n 1 | tr -s ' ' | cut -d ' ' -f9-)\""

答え4

Bash 1行(ファイル名にスペースが含まれていない場合):

cat $(ls -lrt | tail -1 | rev | cut -d" " -f1 | rev)

説明する:

tail -1        # get last line of your ls
rev            # reverse characters order
cut -d" " -f1  # take first field using space as a separator

したがって、rev | cut -d" " -f1 | revプラットフォームに応じて文字オフセットフィールド番号を指定せずに、スペースで区切られた最後の単語を取得する方法があります。

関連情報