temukan perintah dengan regex quantifier misalnya {1,2}


13

Saya telah mencoba membuat string perintah find yang akan menemukan semua file yang diakhiri dengan angka 1-99 tetapi mengecualikan semua yang lain.

misalnya saya ingin menemukan myfile1 myfile99 tetapi tidak myfile456 dan bukan myfilebackup

Regex yang saya pikirkan adalah myfile[1-9]{1,2}tetapi saya tidak bisa menjalankannya dengan find.

find . -regex '.*myfile[0-9]{1,2}' ATAU find . -iname 'myfile[0-9]{1,2}'

Dari apa yang saya lihat itu {1,2}bagian yang tidak berfungsi.

(Ngomong-ngomong, Anda bisa menggunakannya -name -regexsecara bergantian?)

Setiap bantuan dihargai.


1
-iname(dan -name) gunakan gumpalan , yang tidak memiliki sintaks ini.
l0b0

Jawaban:


10

Kamu bisa mencoba

find . -regex '.*myfile[0-9][0-9]?'

atau

find . \( -name "myfile[0-9][0-9]" -o -name "myfile[0-9]" \)

Terima kasih - baris pertama bekerja untuk saya. Saya telah mencoba ini dengan -iname tetapi saya tidak berpikir itu mendukung sintaks atau kalau tidak saya melakukan sesuatu yang salah.
Lukas88

17

Jika Anda menemukan GNU, Anda dapat menggunakan jenis ekspresi reguler lain:

find . -regextype sed -regex '.*myfile[0-9]\{1,2\}'

Menurut GNU findmenggunakan sintaks ekspresi reguler Emacs yang dikebiri secara default - Emacs mendukung \{from,to\}sintaks, tetapi setidaknya GNU findtidak mendukungnya.

Anehnya, manual referensi tidak menyertakan bagian pada sedsintaks ekspresi reguler, jadi siapa yang tahu bagian mana yang didukung.


1
sedlike edsepertinya menjadi alias untuk posix-basic, jadi harus kompatibel dengan POSIX BRE (walaupun mendukung beberapa ekstensi like \+). Itu tidak kompatibel dengan GNU di sedmana misalnya [\n]cocok dengan baris baru, bukan backslash atau ndiperlukan oleh POSIX. Lihat juga -regextype posix-extendeduntuk POSIX EREs (so .*myfile[0-9]{1,2}), juga dengan ekstensi seperti \satau\<
Stéphane Chazelas

Saya tidak pernah tahu tentang -regypeype. Tampaknya jika Anda menggunakannya -regextype egrepsepertinya Anda dapat menghindari garis miring terbalik.
Sridhar Sarnobat
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.