Ini adalah masalah dengan shell globbing dan bukan awk
. Untuk melakukan glob secara rekursif Anda harus mengaktifkan globstar
opsi bash .
shopt -s globstar
globstar
Jika diatur, pola ** yang digunakan dalam konteks ekspansi pathname akan cocok dengan semua file dan nol atau lebih direktori dan subdirektori. Jika polanya diikuti oleh a, hanya direktori dan subdirektori yang cocok.
Jadi, Anda akan dapat:
awk -F: '$3 ~ /example/' ** > C:/out.txt
Catatan Anda masih akan menerima kesalahan tentang direktori itu sendiri dilewati tetapi juga akan berulang ke dalamnya. Anda dapat menyembunyikan kesalahan dengan mengarahkan stderr ke / dev / null
awk -F: '$3 ~ /example/' ** > C:/out.txt 2>/dev/null
-exec
dan karena itu dapat dipindahkan ke setelah\;
. Efeknya akan tetap sama. Ada juga perbedaan kecil dalamfind
perintah yang akan menemukan file tersembunyi, sementara shell glob secara default tidak.