Birden çok dosyayı aynı anda Ubuntu'da bir desenle yeniden adlandırma


3

Adında yaklaşık 300 dosya var

some_name_123456789.zip
another-name2_987654321.zip
something(1)_123454321.zip
[2]something_987656789.zip

Hepsini yeniden adlandırmam gerekiyor

ds_123456789.zip
ds_987654321.zip
ds_123454321.zip
ds_987656789.zip

Bunu nasıl yapabilirim?

Yanıtlar:


9

Bunu ile yapabilirsiniz rename komut satırı yardımcı programı. İstediğinizi yapmak için basit bir düzenli ifadeye ihtiyacınız var:

rename "s/.+_/ds/g" files

.+ her şeyi (bu bağlamda) son alt çizgiye kadar temsil eder ( _ ) karakter (bu, ilk örneğinizde belirtildiği gibi, birden çok alt çizgi ile çalışır). Bu, alt çizgiden önce en az bir karakter olmasını gerektirir; eğer dosya adlarına sahipseniz _20131012.zip, kullan .* yerine. Yani bu üç karakterli dize ( .+_ veya .*_ ) her şeye eşleşecek ve dahil dosya adındaki son alt çizgi. s/ eski / yeni / anlamına geliyor s yeni dize yerine ( ds ) eski dize için. g anlamına geliyor g küresel ve bu durumda gerekli olmayabilir.


Regexp'in baştan beri eşleştiğinden emin olmak istiyorum. ^ başlangıca. Ayrıca OP alt çizgiyi korumak istedi. g sonunda seçenek burada gerçekten gerekli değildir - eğer mümkünse, dosya adındaki birden fazla örnekle eşleşir. Bu yüzden bu komutun daha iyi sonuç vereceğini düşünüyorum: rename "s/^.+_/ds_/" files
— pabouk

ekleyerek g benden sadece standart bir alışkanlık ve bu durumda gerekli olmadığını kabul ediyorum.
— noggerl

Bu bir klasör listesi için de işe yarıyor mu yoksa yapmak için ne ekliyorsunuz?
— TechyTimo

Belki exec özelliğini kullan işlevini kullanırdım ama bu, üzerinde çalıştığınız dosyaların isimlerine bağlıdır. Yukarıda belirtilen zip dosyalarını yeniden adlandırmak için kullanabilirsiniz. find . -name "*.zip*" -exec rename "s/.+_/ds/g" {} \; nerede "{} \;" dosyaadı bulmak için değişken döndürür.
— noggerl

1

veya çapraz platform kullanarak renamer :

$ renamer --regex --find '.+_' --replace 'ds' *
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.