GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana Cara Membuka Atau Mencantumkan Semua File Yang Namanya Cocok Dengan Dua Pola Di Bash?

Misalkan saya memiliki direktori dengan ribuan file; bagaimana saya bisa membuka semua file yang namanya berisi string "merah" dan "hijau"?

Jawaban yang Diterima:

(Dengan asumsi bahwa Anda sedang mencari file nama yang mengandung keduanya string “merah” dan string "hijau")

Untuk sia-sia menggunakan bash untuk menguji nama file terhadap 'merah' dan 'hijau' menggunakan =~ operator pencocokan ekspresi reguler:

for f in *
do
  [[ $f =~ red && $f =~ green ]] && echo Bash: yes: "$f" || echo Bash: no: "$f"
done

Untuk menggunakan sintaks shell standar menggunakan case dan gumpalan untuk menemukan file yang sama:

for f in *
do 
  case "$f" in
    *green*red*|*red*green*) echo Case: yes: $f;; 
    *) echo Case: no: $f;; 
  esac
done

Lebih sederhana lagi, dengan globbing shell Anda:

printf "Glob: %sn" *green*red* *red*green*

Contoh dijalankan:

$ touch a b aredgreenb agreenredb agreenbred aredbgreen red green redgreen greenred

$ for f in *
>     do
>       [[ $f =~ red && $f =~ green ]] && echo Bash: yes: "$f" || echo Bash: no: "$f"
>     done
Bash: no: a
Bash: yes: agreenbred
Bash: yes: agreenredb
Bash: yes: aredbgreen
Bash: yes: aredgreenb
Bash: no: b
Bash: no: green
Bash: yes: greenred
Bash: no: red
Bash: yes: redgreen


$ for f in *
>     do
>       case "$f" in
>         *green*red*|*red*green*) echo Case: yes: $f;;
>         *) echo Case: no: $f;;
>       esac
>     done
Case: no: a
Case: yes: agreenbred
Case: yes: agreenredb
Case: yes: aredbgreen
Case: yes: aredgreenb
Case: no: b
Case: no: green
Case: yes: greenred
Case: no: red
Case: yes: redgreen

$ printf "Glob: %sn" *green*red* *red*green*
Glob: agreenbred
Glob: agreenredb
Glob: greenred
Glob: aredbgreen
Glob: aredgreenb
Glob: redgreen

Linux
  1. Cara Mengetahui Daftar Semua Port Terbuka di Linux

  2. Hapus Semua File Dalam Direktori Yang Namanya Tidak Cocok Dengan Baris Dalam Daftar File?

  3. Bagaimana Mendaftar Semua File Yang Telah Diinstal Oleh Paket Apt?

  1. Bagaimana Cara Menyesuaikan Bash Autocomplete Untuk Mencantumkan File Di Direktori Lain?

  2. Bagaimana Cara Mendaftar Deskriptor File Terbuka (dan File yang Mereka Rujuk) Di Sesi Bash Saat Ini?

  3. Cara gzip semua file di semua sub-direktori di bash

  1. Cara mengonversi file teks ke semua huruf besar atau kecil

  2. Cara gzip semua file di semua sub-direktori menjadi satu file terkompresi di bash

  3. Cara mendaftar semua file di jaringan berbagi Windows SMB