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.