Toplu yeniden adlandırma işleminde dosya adlarındaki sayıları nasıl taşırım?


13

Son birkaç saattir dosyaları nasıl yeniden adlandıracağımı anlamaya çalışıyorum.

Ben böyle 2000 dosyaları var:

file.1.pdb
file.2.pdb
file.3.pdb

Bu dosyaları aşağıdaki gibi yeniden adlandırmak istiyorum:

file.pdb.1
file.pdb.2
file.pdb.3

Eğer ifade etmedi bash ?
18'de avazula

4
@avazula Hayır lütfen bu makaleyi okuyun: en.wikipedia.org/wiki/Batch_renaming
Ali Razmdideh

@PerlDuck yes;)
Ali Razmdideh


2
Hey yakın seçmenler - Hepiniz [toplu yeniden adlandırma] etiketinde yalnızca bir soruya ihtiyacımız olduğunu mu düşünüyorsunuz? Bağlantılı gönderide, kullanma fikri dışında bu sorudaki göreve gerçekten yardımcı olan bir şey var mı rename? Bana öyle geliyor ki, toplu yeniden adlandırma sorusunun belirli ayrıntıları varsa, sadece belirli cevaplar vermeliyiz .
Zanna

Yanıtlar:


15

Eğer varsa renamekurulu, kullanabilirsiniz

rename -n 's/(\.\d+)\.pdb$/.pdb$1/' *.pdb   # just watch what WOULD happen
rename    's/(\.\d+)\.pdb$/.pdb$1/' *.pdb   # actually rename the files

Komut renameşu şekilde kurulabilir:

sudo apt install rename

11

mmv(Birden çok dosyayı joker karakter desenleriyle yeniden adlandırın) sayesinde çok kolay:

mmv '*.*.*' '#1.#3.#2' *.pdb

ya da zmvbir zshkabuk; yeniden adlandırmaya izin veren bir modül; bkz. ZMV Örnekleri :

zmv -w '*.*.*' '$1.$3.$2' *.pdb

3
Her ikisi de mmvve zmvbenim için oldukça egzotik görünüyor. Ne olduklarını ve ne yaptıklarını biraz detaylandırır mısınız?
PerlDuck

2
Onların sayfalarına ve örneklerine bağlantılar ekledim.
αғsнιη

mmvoldukça havalı. renameİsim eşleme açısından daha az esnek olsa da, bu tür yeniden adlandırma için daha uygun görünüyor .
JAB

11

Perl Kullanımı rename:

rename -n 's/(\.\d+)(\.pdb)/$2$1/' *.pdb

Hızlı açıklama:

  • *.pdbİle biten tüm dosyaları eşleştir .pdb. (Kabuk tarafından yapılır)
  • (\.\d+)Değişmez bir noktayı, ardından bir veya daha fazla ondalık basamağı eşleştirin. Eşler bir eşleşme grubu oluşturur.
  • $2$1 Birinci ve ikinci eşleşme gruplarını ters çevirin.
  • -nEylem yok (simüle). Çıktı iyi görünüyorsa, bu bayrak olmadan komutu yeniden çalıştırın.

1
LOL. Aynı düşünce. 48 saniye daha hýzlýydýn.
PerlDuck

1
@PerlDuck Lol, evet, aynı düşünce. Cevaplar da oldukça iyi bir şekilde tamamlanıyor: kurulumu siz kapsarsınız, sözdizimini kapsarım.
wjandrea

7

Bu komut dosyasını kullanabilirsiniz:

for i in `seq 1 2000`; do
mv file.$i.pdb file.pdb.$i
done

Veya bu kopyala yapıştır dostu komut:

for i in `seq 1 2000`; do mv file.$i.pdb file.pdb.$i; done

Yukarıdaki komutları kullanmak için, tüm 2000 dosyayı bir klasöre koyun ve terminali bu dizinde açın, ardından yukarıdaki komutu çalıştırın.


5

Son zamanlarda varsayılan dosya yöneticisi olan nautilus, toplu yeniden adlandırma iletişim kutusu aldı. İstediğinizi yapacak kadar güçlü değil. Ama neyse ki kurulabilecek alternatif bir dosya yöneticisi olan thunar var. Thunars rename iletişim kutusu ile GUI'yi kullanarak istediğinizi yapabilirsiniz.

İlk yükleme thunar:

sudo apt install thunar

Thunar'ı başlatın, dosyalarınızın bulunduğu dizine gidin. Sonra hepsini seçin. Düğmesine basın F2.

Açılan iletişim kutusunda tekrar tüm dosyaları seçin. Modu "Ara ve Değiştir" ve "Ad ve Sonek" olarak değiştirin. "Normal İfade" yi kontrol edin. Şimdi aşağıdakileri arama ve değiştirme kalıpları olarak kullanın:

file\.(.+)\.pdb

ve

file.pdb.$1

Son olarak yeniden adlandır düğmesini tıklayın.

Bu yolun avantajı, yeniden adlandırma işleminden önce ne olacağını görsel olarak önizlemenizdir.

thunar yeniden adlandırma iletişim kutusu


1
Çoğu programın komutunu ön ekiyle İngilizce mesajlar yazmasını sağlayabilirsiniz LC_MESSAGES=POSIX, örn LC_MESSAGES=POSIX free. Grafiksel uygulamalar için aynı şekilde çalışır, ancak varsayılan yapılandırmasında Nautilus gibi kalıcı uygulamalar söz konusu olduğunda, bir önceki örneği nautilus -qilk önce sonlandırmanız gerekir .
David Foerster

@DavidFoerster bahsettiğiniz için teşekkürler, resim değiştirildi.
Sebastian Stark

3

Sen kullanabilirsiniz renamedan util-linux(komut denir bunun için rename.ulubuntu):

rename.ul .pdb '' *
rename.ul "file." "file.pdb." *

Bu, önce .pdbuzantıyı uçtan kaldırır ve daha sonra tekrar ortasına yerleştirir.


1
Oldukça havalı. Farkında değildim rename.ul. Sözdizimi biraz, um, beklenmedik, ama aslında reklamını yaptığınız gibi çalışıyor. Artı: ayrıca bir -n(dokunma, sadece söyle) anahtarı var.
PerlDuck
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.