2009-09-30 14 views

cevap

30

(bu aynı zamanda düz eski Bourne sh çalışır) bu deneyin:

for i in *000.tga 
do 
    mv "$i" "`echo $i | sed 's/000//'`" 
done 

Her iki argüman

boşluk desteklemek için tırnak içine sarılır

+0

+1 (ve iyi yanıtlar elde etmek için upvotes üzerinde çok düşük çalışıyorum çünkü). –

33

Bash sed benzeri oyuncu değişikliği yapabilir dosya isimleri.

+0

İşleri güzel OS X (10.6.8) üzerinde. Kullanışlı ve özlü. Teşekkürler. – jamesnotjim

+0

Güzel, "{" işlevini açıklayabilir misiniz? – efrem

+0

@efrem: Kıvrımlı ayraçlar, değişken isimler için isteğe bağlı bir sınırlayıcıdır ve parametre genişletmeleri için gereklidir. Daha fazla bilgi için [Bash Kılavuzu] 'na (https://www.gnu.org/software/bash/manual/bashref.html#Shell-Parameter-Expansion) bakın. –

8

olmayan bir bash çözüm İki hızlı posterleri biliyorsun çünkü zaten çalışmamıza dahil olan:

bazı sistemlerde varsayılan olarak yüklenir rename adlı mükemmel kısa Perl programı var (diğerleri daha az kullanışlı adlandırma programı var) . Bu örneğin, kendi isimlerinin değiştirilmesi için perl normal ifadeler kullanabilirsiniz sağlar:

rename 's/000//' *000*.tga 
4
#!/bin/bash 
ls | while read name; do 
    echo mv $name ${name/$1//} 
done 
+1

+1: Ben seviyorum | okurken inşa et. – Cascabel

+3

"Ad okunurken ls |", "adında" için daha iyi nasıl? –

+0

@Laurence Gonsalves: kabuk joker karakterlerini kullanarak komut satırını genişletir ve orada büyük bir sınır yoktur. "okunurken" bu – Javier

İlgili konular