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 -
@()
adalahextglob
pola, akan cocok dengan salah satu pola di dalamnya, karena kita hanya memiliki satu pola di dalamnya, itu akan memilih itu -
!(.|)
adalahextglob
another 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