Saya ingin melakukan beberapa tindakan (misalnya chown ) pada semua file tersembunyi dalam direktori.
Saya tahu bahwa .* adalah tidak ide yang bagus karena ia juga akan menemukan . dan induk .. direktori (saya tahu bahwa rm akan gagal beroperasi pada . dan .. tetapi perintah lain, termasuk chown dan chmod , dengan senang hati akan berlaku)
Tapi semua file tersembunyi saya memiliki nama yang berbeda!
Bagaimana saya harus glob untuk semua file tersembunyi sambil mengecualikan . dan .. ?
Jawaban yang Diterima:
Anda dapat menggunakan extglob berikut ini pola:
[email protected](!(.|))
-
.cocok dengan.awalnya -
@()adalahextglobpola, akan cocok dengan salah satu pola di dalamnya, karena kita hanya memiliki satu pola di dalamnya, itu akan memilih itu -
!(.|)adalahextglobanother yang lain pattern (bersarang), yang cocok dengan file apa pun tanpa atau satu.; Karena kami telah mencocokkan.pada awalnya, seluruh pola ini akan cocok dengan semua file yang dimulai dengan.kecuali.dan...
extglob diaktifkan pada sesi interaktif bash secara default di Ubuntu. Jika belum, aktifkan terlebih dahulu:
shopt -s extglob
Contoh:
$ echo [email protected](!(.|))
.bar .foo .spam