地球の順序を変更できますか?

地球の順序を変更できますか?

次の手順を実行して、システムログに特定のメッセージのすべてのインスタンスを時系列で表示しようとします。

grep squiggle /var/log/messages*

残念ながら、グローバルパターンは現在アクティブなファイルと最初に一致します。例えば。

/var/log/messages
/var/log/messages-20120220
/var/log/messages-20120227
/var/log/messages-20120305
/var/log/messages-20120312

つまり、最新のメッセージが最初に表示され、その後に履歴メッセージが時系列で表示されます。

messagesリストの最後に空の一致(つまりのみ)が表示されるようにグローバルパターンの動作を調整することは可能ですか?

そうでなければ、この問題を解決する良い方法は何ですか?

答え1

zshでは、以下を使用して一致順序を制御できます。グローバル予選

echo /var/log/messages*        # usual lexicographic order
echo /var/log/messages*(On)    # reverse lexicographic order
echo /var/log/messages*(om)    # reverse chronological order (ascending mtime)
echo /var/log/messages*(Om)    # chronological order order (descending mtime)

(より多くの可能性についてはマニュアルを参照してください。)最新バージョンの比較機能を使用または提供して、独自のソートoe順序を定義することもできますo+

ここで正しいファイルの順序は時系列です。ただし、bashでも名前に基づいて簡単にシミュレートできます。

grep squiggle /var/log/messages{-*,}

答え2

ワイルドカードの順序を変更する方法がわかりませんが、あなたのケースに簡単な解決策があります。

grep squiggle /var/log/messages-* /var/log/messages

つまり、globパターンのファイルは一致せず、引数リストの末尾messagesに追加されます。grep

答え3

次のように、ls -tr(mod時系列ソートと逆順ソート)でバックティックを使用できます。

grep squiggle `ls -tr /var/log/messages*`

関連情報