Katakanlah saya memiliki direktori dengan file a1, a2, a3, b1, b2, b3. Saya hanya ingin mencocokkan file yang dimulai dengan a
tetapi tidak mengandung 3
. Saya mencoba ls -I "*3" *a*
tetapi kembali a1 a2 a3
, meskipun saya tidak ingin itu cocok a3
. Apakah ini mungkin ls
?
12
do not list implied entries matching shell PATTERN
namun tidak menjelaskan apa yang dimaksud dengan tersirat , tapi saya kira itu hanya berlaku untuk file yangls
didapat dengan ekspansi glob - danls
tidak memperluasa*
, shell melakukan itu .Jawaban:
Hanya:
shopt -s extglob
mengaktifkan globbing diperpanjang.a
cocok dengan awala
!()
meniadakan pertandingan di dalam()
...*3*
yang3
dan apa pun sebelum atau sesudahnya.sumber
set -s extglob
Jawaban yang ada dengan baik menyatakan cara terbaik untuk melakukan ini dengan gumpalan; Saya akan memasukkan ini karena dalam kebanyakan kasus,
find
adalah pilihan yang lebih baik jika Anda ingin melakukan skrip atau pemrosesan lebih lanjut:Anda dapat memberi makan jawaban
xargs
untuk tindakan mudah, atau kewhile read
lingkaran untuk hal-hal yang lebih rumit.sumber
Cara yang mudah adalah
a*
3
Perintah UNIX adalah
ls -1
memperlihatkan satu file per baris.grep
biasanya menemukan garis yang cocok dengan suatu pola tetapi dengan-v
perilaku ini terbalik, yaitu grep menemukan garis yang tidak cocok dengan pola itu.sumber
ls
bukan ide goobDengan
zsh
, menggunakan~
operator glob :Dengan
gnu
ls
Anda dapat menggunakan dua--ignore
opsi:yang pertama mengabaikan semua nama file yang tidak dimulai dengan
a
dan yang kedua mengabaikan nama file yang berisi3
sumber