システムログファイルはシリアル化されており、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
プラットフォームに応じて文字オフセットフィールド番号を指定せずに、スペースで区切られた最後の単語を取得する方法があります。