/var/log/myfiles/
ログファイルをディレクトリに保存するプログラムがあります。これらのファイルのサイズは小さく保たれ、ファイル名は数字だけ増加します。最後に、レポートに最後のファイルを追加したいと思います。私はこれをしながら空白を描きました。ファイルは見つかりますが、スクリプトでは機能しません。
/var/log/myfile/master
/var/log/myfile/master.1
/var/log/myfile/master.2
/var/log/myfile/master.3
答え1
目的のファイル(「最後のファイル」)が数値拡張子が最も高いファイルであると仮定すると、次のようになります。zshの強力なワイルドカード機能:
zsh -c 'cat /var/log/master.*(oe['REPLY=${REPLY##*.}']n[-1]) > report'
ワイルドカード/グローバル拡張は次のとおりです。
/var/log/master.*
- 次に始まるファイルと一致します。/var/log/master.
( ... )
- 「グローバル修飾子」を定義します。o
- 結果の並べ替えe['REPLY=${REPLY##*.}']
/var/log/myfile/master.3
- ソートする結果は、最初のピリオドの前のテキストを削除することによって提供されます。3
n
- 結果をアルファベット順ではなく数値順に並べ替えます。[-1]
--結果をソートした後、最後の要素(最も大きい要素)のみを取り出します。
答え2
問題が解決しました。日付と時刻のスタンプを含むようにファイル名を変更しました。必要なデータをより簡単に識別して抽出できます。
Master-20-Jan-2019-18:20.log
Master-20-Jan-2019-18:45.log
Master-20-Jan-2019-19:18.log