Sebagai catatan, [...]konstruk tersebut cocok dengan satu karakter, yang dapat berupa salah satu karakter di antara tanda kurung. Jadi ekspresi Anda cocok JJA atau Jug( Jdari [Jun], udari [Jul], dan gdari [Aug]) tetapi bukan singkatan bulan yang Anda harapkan cocok.
tripleee
Jawaban:
12
Anda dapat mencocokkan pada beberapa pola seperti:
awk '/Jun/ || /July/ || /Aug/'<(ls -lrh)
Ini mengembalikan semua kecocokan untuk Juni, Juli, atau Agustus. Anda tidak memerlukan printpernyataan karena itu adalah awktindakan default.
awk mengerti regexps yang diperluas, jadi untuk pola sesederhana itu Anda bisa menuliskannya sebagai awk '/Jun|Jul|Aug/'atauawk '/Ju[nl]|Aug/'
cas
5
Sebagai aturan umum, itu adalah ide yang sangat buruk untuk mem-parsing output dari ls . Cara yang lebih baik untuk melakukan apa yang Anda inginkan adalah
stat -c "%n %y"*| grep 2013-0[678]
Atau, periksa hanya bidang terakhir untuk melindungi dari kasus yang tidak terduga di mana nama file itu sendiri adalah tanggal:
stat -c "%n %y"*| awk '$NF ~ /2013-0[678]/'
Dari man stat:
-c --format=FORMAT
use the specified FORMAT instead of the default; output a new‐
line after each useof FORMAT
%y time oflast modification, human-readable
%n file name
Ini juga contoh yang bagus. Saya tidak pernah memeriksa STAT sebelumnya. terima kasih atas info
hebatnya
Mungkin berubah untuk ... | awk '$NF ~ /2013-0[678]/'hanya memeriksa output field terakhir, di (mungkin?) Bahkan bahwa file nama sesuai dengan regex bahkan ketika tanggal tidak.
Perintah untuk menemukan file di pohon direktori yang cocok dengan kriteria tertentu adalah find. Jika Anda memiliki GNU find (yaitu Linux atau Cygwin yang tidak tertanam) atau FreeBSD find (yaitu FreeBSD atau OSX), Anda dapat menggunakan -newermtuntuk mencocokkan file yang terakhir dimodifikasi setelah tanggal tertentu.
Tambahkan tahun jika Anda ingin mencocokkan file pada tahun tertentu, bukan tahun kalender saat skrip berjalan.
Jika implementasi find Anda tidak memiliki -newermt, Anda harus melakukannya -newer, yang membandingkan tanggal file yang findditemukan dengan file tetap. gunakan touchuntuk membuat file sementara dengan tanggal yang ingin Anda gunakan sebagai batas.
[...]
konstruk tersebut cocok dengan satu karakter, yang dapat berupa salah satu karakter di antara tanda kurung. Jadi ekspresi Anda cocokJJA
atauJug
(J
dari[Jun]
,u
dari[Jul]
, dang
dari[Aug]
) tetapi bukan singkatan bulan yang Anda harapkan cocok.Jawaban:
Anda dapat mencocokkan pada beberapa pola seperti:
Ini mengembalikan semua kecocokan untuk Juni, Juli, atau Agustus. Anda tidak memerlukan
print
pernyataan karena itu adalahawk
tindakan default.sumber
awk '/Jun|Jul|Aug/'
atauawk '/Ju[nl]|Aug/'
Sebagai aturan umum, itu adalah ide yang sangat buruk untuk mem-parsing output dari ls . Cara yang lebih baik untuk melakukan apa yang Anda inginkan adalah
Atau, periksa hanya bidang terakhir untuk melindungi dari kasus yang tidak terduga di mana nama file itu sendiri adalah tanggal:
Dari
man stat
:sumber
| awk '$NF ~ /2013-0[678]/'
hanya memeriksa output field terakhir, di (mungkin?) Bahkan bahwa file nama sesuai dengan regex bahkan ketika tanggal tidak.ls
adalah perintah untuk menampilkan informasi tentang file yang dapat dibaca manusia. Jangan menggunakannya dalam skrip .Perintah untuk menemukan file di pohon direktori yang cocok dengan kriteria tertentu adalah
find
. Jika Anda memiliki GNU find (yaitu Linux atau Cygwin yang tidak tertanam) atau FreeBSD find (yaitu FreeBSD atau OSX), Anda dapat menggunakan-newermt
untuk mencocokkan file yang terakhir dimodifikasi setelah tanggal tertentu.Tambahkan tahun jika Anda ingin mencocokkan file pada tahun tertentu, bukan tahun kalender saat skrip berjalan.
Jika implementasi find Anda tidak memiliki
-newermt
, Anda harus melakukannya-newer
, yang membandingkan tanggal file yangfind
ditemukan dengan file tetap. gunakantouch
untuk membuat file sementara dengan tanggal yang ingin Anda gunakan sebagai batas.sumber