Aşağıdaki dosya gibi bir dizindeki dosyaları yeniden adlandırmak için:, PMC21375.pdf.txtyeniden adlandırılması gerekiyor 21375.txt. yani, her ikisini de PMCve pdfher dosya adından kaldırmak gerekir .
Aşağıdaki dosya gibi bir dizindeki dosyaları yeniden adlandırmak için:, PMC21375.pdf.txtyeniden adlandırılması gerekiyor 21375.txt. yani, her ikisini de PMCve pdfher dosya adından kaldırmak gerekir .
Yanıtlar:
İle perladlı kullanıcının rename:
rename 's/(PMC|\.pdf)//g' *pdf.txt
Demo:
$ ls *txt
PMC21375.pdf.txt
$ rename -n 's/(PMC|\.pdf)//g' *txt
PMC21375.pdf.txt -> 21375.txt
dan shellistemi. Çok faydalı, birazperlbir ikame yaptığı gibi kod.
Sen kaldırabilirsiniz -nTestlerinizi Geçersizlerin olunca (kuru işletilen modu anahtarını).
Bunu yapabilen veya yapamayan aynı ada sahip başka araçlar da vardır, bu yüzden dikkatli olun.
Aşağıdaki komutu çalıştırırsanız ( linux)
$ file $(readlink -f $(type -p rename))
ve şöyle bir sonucun var
.../rename: Perl script, ASCII text executable
o zaman bu doğru araç gibi görünüyor =)
Değilse, varsayılan (genellikle zaten durum) yapmak Debianve aşağıdaki gibi türev yapmak için Ubuntu:
$ sudo update-alternatives --set rename /path/to/rename
( komutunuzun /path/to/renameyolunu değiştirin perl's rename.
Son olarak, bu araç aslında Perl'in babası Larry Wall tarafından yazılmıştır.
Yeniden adlandırma komutunun yanı sıra doğrudan bash'da da yapabilirsiniz (çoğunun sadece bir yolu):
for file in *pdf.txt; do mv $file ${file//[A-Z.]}.txt ; done
Pinyaka'ya nasıl çalıştığını göstermek için düzenlendi:
hmontoliu@ulises2:/tmp/foo$ touch PCM21375.pdf.txt PCM21376.pdf.txt
hmontoliu@ulises2:/tmp/foo$ ls
PCM21375.pdf.txt PCM21376.pdf.txt
hmontoliu@ulises2:/tmp/foo$ for file in *pdf.txt; do mv $file ${file//[A-Z.]}.txt ; done
hmontoliu@ulises2:/tmp/foo$ ls
21375.txt 21376.txt
.pdf, dosya adından kaldırılmaz .
Dosyaları yeniden adlandırmak için birkaç yardımcı program vardır, ancak kullanımı en kolay olanlardan biridir rename. Sizin durumunuzda, muhtemelen şunları yapabilirsiniz:
rename PMC '' *txt
rename .pdf '' *txt
İlk parametre, dosya adının değiştirilecek kısmıdır. İkinci parametre, değiştirilen dizedir. Burada ''boş dizeyi temsil etmek için kullanıyorum . Aşağıdaki tüm parametreler yeniden adlandırılacak dosyalardır, burada *txtmetin dosyalarının değiştirilmesini sınırlamak için kullandım .
renameLinux kullanıyorsanız zaten mevcut olmalıdır. * BSD veya OS X çalıştırıyorsanız, önce yüklemeniz gerekebilir.
rename. Biri util-linuxve perlfarklı sözdizimine sahip bir tane var. Eğer gelen biri gibi görünüyor atıfta ediyoruz biri util-linuxbazen denir rename.ulböylece ile karıştırılmamalıdır renamegelen perldiğer bazı sistemlerde, süre renameutil-linux gelen bir ve gelen biridir perldenir prename.
rename 's/PMC// *.txtverename s/\.pdf// *.txt
Öncelikle dosyalarınızı yedekleyin! Daha sonra temel olarak, geçerli dizinde genel formla bir python tek astar kullanabilirsiniz:
python -c "import glob,os; [os.rename(fn, fn.replace('PATTERN', 'REPLACE')) for fn in glob.glob('PATH/*')]"
özel durumunuzda, bunu iki kez kullanabilirsiniz:
python -c "import glob,os; [os.rename(fn, fn.replace('.pdf', '')) for fn in glob.glob('*')]"
kaldırmak için .pdf:
python -c "import glob,os; [os.rename(fn, fn.replace('PMC', '')) for fn in glob.glob('*')]"
kaldırmak için PMC.
Bunu dene:
for i in *.pdf.txt; do j=${i//\.pdf/}; j=${j//PMC/}; mv $i $j; done
j=${i//\.pdf/}Araçlar yerine .pdfde $ihiçbir şey. Benzer şekilde, ikinci j ataması da PMC'den kurtulur.
Eğer kullanıyorsanız zsh, bu tipik bir iştir zmv:
zmv 'PMC(*).pdf.txt' '$1.txt'
( zmvpotansiyel çatışmaları incelikle ele alır).
.pdf, dosya adından kaldırılmaz .