Aynı temel dosya adına sahip birkaç dosyam var. Biri dışındaki tümünü kaldırmak istiyorum
foo.org #keep
foo.tex #delete
foo.fls #delete
foo.bib #delete
etc
Bir tane tutmak zorunda kalmazsam, kullanabileceğimi biliyorum rm foo.*
.
TLDP eşleşmeyi reddettiğini gösterdi ^
. Deneme ve yanılma yoluyla bunu bulabildim
rm foo.*[^org]
ihtiyacım olanı yapıyor, ancak sözdizimini gerçekten anlamıyorum.
Ayrıca kullanımım durumda değil bir sınırlama ise, bu desen de görmezden düşünüyorum foo.o
ve foo.or
. Nasıl ve ne bir topak bu desen çalışması yoksayar ümit etmesi sadece foo.org
benziyor?
Regular Expression
. Gruplandırma karakterlerine dikkat etmelisin. Parantez kullanarak, bir harflerle uzantısı vardı herhangi bir dosyayı silmek olacak bir karakter sınıfı anlam belirttiğiniz o
, r
ya g
herhangi bir sırada. Bir grup oluşturmak ve karakter sırasını korumak için parantez kullanın.
foo.*[^org]
başlayan herhangi bir dosya adıyla eşleşir foo.
. Bu yüzden maç olur foo.orb
ama foo.org
ya foo.or
ya foo.o
. GlennJackman'ın cevabı, bir eşleşmeyi yok etmek için genişletilmiş desen eşleştirme özelliklerinin nasıl etkinleştirileceğini gösterir.
rm foo.*[^org]
tüm dosyaları siler son ne karakterdiro
,r
yag
, bu yüzdenfoo.foo
eşler olmaz.