GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana Ekspresi Reguler Berbeda Dari Wildcard yang Digunakan Untuk Memfilter File?

Sementara kami menggunakan * untuk menunjukkan nol atau lebih karakter sebelumnya di grep , kami menggunakan *.c untuk menemukan semua file C saat kita menggunakannya dengan ls perintah seperti ls *.c . Bisakah seseorang memberi tahu bagaimana penggunaan * berbeda dalam dua kasus ini?

Jawaban yang Diterima:

Nama file shell globbing dan ekspresi reguler menggunakan beberapa karakter yang sama, dan mereka memiliki tujuan yang sama, tetapi Anda benar, mereka tidak kompatibel. Globbing nama file adalah sistem yang jauh lebih kuat.

Dalam globbing nama file:

  • * berarti “nol atau lebih karakter”

  • ? berarti “setiap karakter tunggal”

Tapi di regex, Anda harus menggunakan .* berarti “nol atau lebih karakter”, dan . berarti "setiap karakter tunggal." Sebuah ? berarti sesuatu yang sangat berbeda dalam regex:nol atau satu instance dari elemen RE sebelumnya.

Tanda kurung siku ([] ) tampaknya berfungsi sama di kedua sistem pada sistem tempat saya mengetik ini, setidaknya untuk kasus sederhana. Ini mencakup hal-hal seperti kelas karakter POSIX (mis. [:alpha:] ). Karena itu, jika Anda memerlukan perintah untuk bekerja pada banyak jenis sistem yang berbeda, saya sarankan untuk tidak menggunakan apa pun di luar hal-hal dasar seperti daftar karakter (mis. [abeq] ) dan mungkin rentang karakter (mis. [a-c] ).

Perbedaan ini berarti kedua sistem hanya dapat dipertukarkan secara langsung untuk kasus-kasus sederhana. Jika Anda memerlukan pencocokan regex untuk nama file, Anda perlu melakukannya dengan cara lain. find -regex adalah salah satu pilihan. (Perhatikan bahwa ada juga find -name , omong-omong, yang menggunakan sintaks glob.)


Linux
  1. Cara Menggunakan Awk dan Ekspresi Reguler untuk Memfilter Teks atau String dalam File

  2. Cara Mendaftar File yang Diinstal Dari Paket RPM atau DEB di Linux

  3. Cara mengunduh File dari server SFTP Menggunakan skrip python

  1. Bagaimana cara menggunakan Wget untuk mengunduh file secara rekursif dari direktori web?

  2. Bagaimana Cara Menyalin File Dari Anggur Ke Desktop?

  3. Bagaimana cara mendaftar file yang baru dihapus dari direktori?

  1. Cara Mengecualikan File Ukuran Tertentu Dari Menyalin Di Linux

  2. Cara Membuat Video Dari File PDF Di Linux

  3. Bagaimana cara mengecualikan file dari arsip TAR menggunakan ekspresi reguler?