GNU/Linux >> Belajar Linux >  >> Linux

Pencocokan pola tidak berfungsi dalam skrip bash

Globbing tidak berfungsi seperti itu kecuali Anda mengaktifkan extglob pilihan shell Sebagai gantinya, saya sarankan menggunakan find :

find . -maxdepth 1 -not -name '<NAME>' -or -name '<NAME>' -delete

sebelum menjalankan perintah ini dengan -delete pastikan hasilnya benar


Metode dengan setelan default dan tanpa proses eksternal:

for f in *; do [[ $f =~ ^file[12]$ ]] || echo "$f"; done

Sintaks glob yang diperluas yang Anda coba gunakan dimatikan secara default; Anda harus mengaktifkannya secara terpisah di setiap skrip tempat Anda ingin menggunakannya.

shopt -s extglob

Skrip tidak boleh menggunakan ls meskipun saya membayangkan Anda menggunakannya hanya sebagai pengganti di sini.


Linux
  1. File metadata tidak cocok dengan checksum – kesalahan YUM!

  2. Mengapa Substitusi Proses Bash Tidak Bekerja Dengan Beberapa Perintah?

  3. Linux – Mengapa Setuid Tidak Bekerja??

  1. Dalam Skrip Bash Bagaimana Perintah Lanjutkan Bekerja Dengan Loop Tertanam?

  2. Mengapa Pelengkapan Otomatis Tidak Berfungsi Saat Mengetik Nama Perintah Setelah `sumber`?

  3. Mengapa "sementara Baca" Ini Bekerja Di Terminal, Tapi Tidak Di Skrip Shell?

  1. Mengapa Regex Di Bash Hanya Bekerja Jika Itu Adalah Variabel Dan Tidak Secara Langsung??

  2. Bagaimana cara kerja cat << EOF di bash?

  3. Pencocokan pola skrip Bash