Özel durumunuzda aşağıdaki bashkomutu kullanabilirsiniz ( bashmacOS'ta varsayılan kabuktur):
for f in *.png; do echo mv "$f" "${f/_*_/_}"; done
Not: Dosya adlarınız ile başlamak bir şans varsa -, yer -- önlerinde [1]:
mv -- "$f" "${f/_*_/_}"
Not: bir kuru çalıştırma gerçekleştirmek için echobaşına eklenmiştir mv. Gerçek yeniden adlandırmayı gerçekleştirmek için bunu kaldırın.
Komut satırından çalıştırabilir veya bir komut dosyasında kullanabilirsiniz.
"${f/_*_/_}"bir bash parametre genişletme uygulamasıdır : (ilk) alt dize eşleme modeli _*_değişmez değer ile değiştirilir ve addan _orta simgeyi etkili bir şekilde keser.
- Bunun
_*_bir model olduğunu (genelleme için de kullanılan bir joker karakter ifadesi), normal bir ifade olmadığını (kalıplar hakkında bilgi edinmek, çalıştırmak man bashve aramak için Pattern Matching) unutmayın.
Dosyaları sık sık toplu olarak yeniden adlandırırsanız , Perl tabanlı renameyardımcı program gibi özel bir araç yüklemeyi düşünün . MacOS'ta, popüler paket yöneticisi Homebrew'i aşağıdaki gibi kullanarak kurabilirsiniz :
brew install rename
İşte üstteki komutun karşılığı rename:
rename -n -e 's/_.*_/_/' *.png
Yine, bu komut bir kuru çalıştırma gerçekleştirir; -ngerçek yeniden adlandırma gerçekleştirmek için kaldırın .
- Benzer
bashçözümü s/.../.../gerçekleştirir metin ikame ama - aksine bashgerçek - düzenli ifadeler kullanılmıştır.
[1] Özel değişken amacı --çok kamu tarafından desteklenen, olarak ele alınması gerektiğini sonraki argümanlar sinyal için işlenen hatta eğer (değerler) nokta gibi seçenekleri nedeniyle ile başlayan -şekilde, Jacob C notlar.