Saya mencoba untuk menunjukkan semua contoh pesan tertentu dari syslog dalam urutan kronologis dengan melakukan sesuatu seperti berikut:
grep squiggle /var/log/messages*
Sayangnya pola glob cocok dengan file yang sedang aktif terlebih dahulu. misalnya.
/var/log/messages
/var/log/messages-20120220
/var/log/messages-20120227
/var/log/messages-20120305
/var/log/messages-20120312
Ini berarti bahwa pesan terbaru muncul pertama diikuti oleh pesan historis dalam urutan kronologis.
Apakah mungkin untuk menyesuaikan perilaku pola gumpal entah bagaimana untuk membuat kecocokan kosong (mis. Adil messages
) muncul di akhir daftar?
Jika tidak, apa cara yang baik untuk mengatasi masalah ini?
tac
:grep squiggle /var/log/messages* | tac
...Jawaban:
Saya tidak tahu cara mengubah urutan globbing, tetapi ada solusi mudah untuk kasus Anda:
yaitu tidak mencocokkan
messages
file dalam pola glob Anda, dan menambahkannya ke akhirgrep
daftar argumen.sumber
grep squiggle /var/log/messages{-*,}
. (Disebut "ekspansi bash brace" jika Anda ingin google itu.)Di zsh, Anda dapat mengontrol urutan pertandingan (antara lain) dengan kualifikasi bola .
(Lihat manual untuk kemungkinan lebih lanjut.) Anda bahkan dapat menentukan urutan penyortiran Anda sendiri dengan memasok fungsi perbandingan di versi terbaru, dengan
oe
atauo+
.Di sini, urutan file yang tepat adalah urutan kronologis. Anda dapat meniru dengan mudah berdasarkan nama, dan itu berfungsi bahkan dalam bash:
sumber
Anda dapat menggunakan backticks yang dikombinasikan dengan ls -tr (urutkan berdasarkan waktu mod dan secara terbalik) seperti ini:
sumber