Debian ve türevleri tarafından dağıtılan Perl betiğinirename
kullandığınızı unutmayın (Ubuntu, Mint,…). Diğer Linux dağıtımları tamamen farklı ve daha az kullanışlı bir komut olarak adlandırılır rename
.
y/A-Z/a-z/
aralıktaki her bir karakteri çevirir A
yoluyla Z
aralığında karşılık gelen karakteri içine a
aracılığıyla z
, ilgili küçük harfe yani ASCII büyük harf. Ters çeviriyi yapmak için tuşunu kullanın y/a-z/A-Z/
. Aynı komutu olduğunu yazmak için başka bir yol rename '$_ = uc($_)' *
- uc
olan u pper c ase fonksiyon ve rename
komut yapılan dönüşüm dayalı dosyaları yeniden adlandırır $_
değişken.
rename '…' *
sadece geçerli dizindeki dosyaları yeniden adlandırır, çünkü *
eşleşen budur. Nokta dosyaları (adı ile başlayan dosyalar .
) da atlanır.
Geçerli dizindeki ve alt dizinlerdeki dosyaları yinelemeli olarak yeniden adlandırmak isterseniz find
, geçerli dizini yinelemeli olarak taramak için komutu kullanabilirsiniz . Burada bir zorluk var: eğer ararsanız rename
, bu hem dizini hem de temel isim bölümünü yeniden adlandırır. Eğer ararsanız rename
bunun (içine recursing önce dizin find -exec rename … {} \;
), find
bu en bir dizin bulduk çünkü karıştı ama bu dizin artık içine inerek çalışır zaman var olur. Sen anlatarak bu çalışabilirsiniz find
harekete geçmeden önce bir dizin çapraz geçiş, ancak daha sonra yeniden adlandırmak girişiminde sona foo/bar
kadar FOO/BAR
ancak dizin FOO
mevcut değil.
Bu zorluktan kaçınmanın basit bir yolu, yeniden adlandırma komutunun yalnızca yolun temel adında hareket etmesini sağlamaktır. Normal ifade ([^/]*\Z)
, yolun a içermeyen son bölümüyle eşleşir /
.
find . -depth -exec rename 's!([^/]*\Z)!uc($1)!e' {} +
Kabuk zsh , yeniden adlandırmak için daha kullanışlı özellikler sunar - Perl'den bile daha şifreli, ancak ters ve genellikle daha kolay oluşturulabilir.
İşlev zmv
dosyaları kalıplara göre yeniden adlandırır. autoload -U zmv
Etkinleştirmek için bir kez çalıştırın (bu satırı kendi bölgenize koyun .zshrc
).
zmv
(Değiştirilecek desen) ile ilgili ilk argümanda , zsh'ın güçlü joker desenlerini kullanabilirsiniz . zmv
(Değiştirilen metin) ile ilgili ikinci bağımsız değişkende , geçmiş değiştiricileri de dahil olmak üzere parametre genişletme özelliklerini kullanabilirsiniz .
zmv -w '**/*' '$1$2:u'
Açıklama:
-w
- her joker karakter desenine otomatik olarak sayısal değişkenler atama
**/*
- alt dizinlerdeki tüm dosyalar, özyinelemeli (alt dizinlerin **/
0, 1 veya daha fazla düzeyiyle eşleşir)
$1
- burada her yolun dizin kısmı ile eşleşen ilk sayısal değişken
$2:u
- burada :u
değeri büyük harfe dönüştürmek için değiştiriciyle birlikte her yolun temel ad bölümünü eşleştiren ikinci sayısal değişken
Ek bir avantaj olarak, bu, ortam yerel ayarlarına uyar.
Yazdığınız bir zmv
komuttan emin değilseniz -n
, komutun ne yapacağını yazdırma seçeneğini değiştirebilir ve hiçbir şeyi değiştiremezsiniz. Çıkışı kontrol edin ve istediğiniz şeyi yaparsa, -n
gerçekte işlem yapmadan komutu yeniden çalıştırın .
rename 'y/a-z/A-Z/' *
istediğinizi alacağınızdan şüpheleniyorum . Nerede test ettiğine dikkat et.