Yeniden adlandır - “s //” vs “y //” ne anlama geliyor?


9

Adam sayfa iki örnek verilmektedir:

rename 's/\.bak$//' *.bak
rename 'y/A-Z/a-z/' *

Yani ya s ya da y ve sonra /replaceThis/withThis

Önde gelen s ve y ne anlama geliyor? Başka seçenekler var mı?

Yanıtlar:


12

İlk durumda:

rename 's/\.bak$//' *.bak

dosya adlarına karşı düzenli bir ifade çalıştırıyorsunuz ve ifadelerin eşleşen kısmını (dosya adının sonundaki .bak) ikinci ifadeyle (boş) değiştiriyorsunuz.

İkinci durumda:

rename 'y/A-Z/a-z/' *

normal ifade deseni alanı ile eşleşiyor ve hedefe harf çeviriyorsunuz. Başka bir deyişle, AZ aralığı az aralığına değiştirilir ve dosya adları küçük harf olur.

Daha fazla komut ve daha fazla ayrıntı için sed için man sayfasına bakmanızı öneririm . 'S' komutunun en sık kullanıldığını düşünüyorum. Ayrıca, normal ifade (bölüm 7) ve perl belgeleri de yardımcı olabilir. Özellikle, perl ve düzenli ifadeler hakkında bir eğitim .


Gönderen man sed:

s / düzenli ifadesi / değiştirme /    
       Normal ifadeyi kalıp boşluğuyla eşleştirmeyi deneyin. Eğer başarılı olursa‐
       ful, değiştirme ile eşleşen kısmı değiştirin. 
       yedek özel karakter içerebilir ve buna başvurmak
       desen uzayının eşleşen kısmı ve özel
       karşılık gelen eşleşmeye başvurmak için \ 1'den \ 9'a kaçar
       normal ifadedeki alt ifadeler.

y / kaynak / hedef /  
       Görünen desen uzayındaki karakterleri harflerle çevirme
       kaynakta dest içindeki ilgili karaktere.

Çok teşekkürler - Özellikle 'herhangi bir linux distro ve OSX arasında çok sayıda uygulama göz önüne alındığında insanları' sed 'e işaret etmenin en iyi fikir olduğundan emin değilim
aaaaaa

@aaaaaa Bu site sadece Ubuntu hakkında.
wjandrea
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.