normal ifade nicelik belirteci ile komut bul örn. {1,2}


17

Ben 1-99 bir sayı ile biten ancak diğerlerini hariç tüm dosyaları bulacak bir bulma komut dizesi oluşturmaya çalışıyorum.

örneğin, myfile1 myfile99 dosyasını bulmak istiyorum ancak myfile456 değil, myfilebackup değil

Düşündüğüm normal ifade myfile[1-9]{1,2}ama bunu bulmak için çalışamıyorum.

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

Görebildiğim kadarıyla {1,2}çalışmayan kısım.

(bu arada -name -regexbirbirinin yerine kullanılabilir mi?)

Herhangi bir yardım takdir.


1
-iname(ve -name) bu sözdizimine sahip olmayan globları kullanın.
l0b0

Yanıtlar:


12

Deneyebilirsin

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

veya

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

Teşekkürler - ilk satır benim için çalışıyor. Bunu -iname ile denemiştim ama sözdizimini desteklediğini düşünmüyorum yoksa yanlış bir şey yapıyorum.
Lukas88

18

GNU bulmanız varsa, başka bir normal ifade türü kullanabilirsiniz:

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

GNU göre findbir kullanır kısırlaştırılmış Emacs düzenli ifade sözdizimi Emacs destekler - varsayılan olarak \{from,to\}sözdizimi, ama en azından GNU findbunu desteklemez.

Garip bir şekilde, referans el kitabı sednormal ifade sözdizimi hakkında bir bölüm içermediğinden , bu bölümlerin hangi bölümlerinin desteklendiğini kim bilebilir.


1
sedgibi edbir takma ad gibi görünüyor posix-basic, bu yüzden POSIX BRE ile uyumlu olmalıdır (ancak bazı uzantıları destekliyor olsa da \+). sedÖrneğin [\n]ters eğik çizgi yerine yeni bir satırla eşleştiği veya nPOSIX için gerekli olduğu GNU ile uyumlu değildir . Ayrıca bkz -regextype posix-extended. POSIX ERE'ler ( .*myfile[0-9]{1,2}ayrıca) \sveya ayrıca\<
Stéphane Chazelas

-Regextype hakkında hiç bir şey bilmiyordum. Görünüşe göre kullanırsanız -regextype egrepters eğik çizgileri önleyebilirsiniz.
Sridhar Sarnobat
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.