.Htm uzantılı bir dosya grubum varsa, hepsini .html olarak nasıl yeniden adlandırabilirim?
mv *.htm *.html
çalışmıyor.
.Htm uzantılı bir dosya grubum varsa, hepsini .html olarak nasıl yeniden adlandırabilirim?
mv *.htm *.html
çalışmıyor.
Yanıtlar:
Veya, saf bash kullanabilirsiniz ... (mv hariç, bu ..)
for file in *.htm; do mv "$file" "${file%.htm}.html"; done
ve kötü basename eşyalarından kaçının. ;)
Bash'in geniş bir değişken genişletme seçeneği vardır. Burada kullanılan, '%', en küçük eşleme sonekini değişken değerinden kaldırır. Desen küre şeklindedir, bu yüzden ${file%.*}
de işe yarayabilirdi. '%%' operatörü en büyük eşleme sonekini kaldırır ve desen sabitlendiği için yukarıdaki örnekte değiştirilebilir ${file%%.*}.html
.
Daha düzenli numaralar için bash manpage'in değişken alt bölümlerine bakın. Doğrudan bash içinde yapılabilecek çok şey var.
Dosya adlarında boşluk, satırsonu veya başka bir boşluk olmamalıdır, ancak freiheit'in cevabının bu versiyonu bunları ele almaktadır. Ayrıca $()
diğer avantajlarla birlikte okunabilirlik için geri tepme yerine kullanır .
for file in *.htm
do
mv "$file" "$(basename "$file" .htm).html"
done
Daha da iyisi - sadece sona ekleme özel durum için:
for file in *.htm
do
mv "$file" "${file}l"
done
rename(1)
tam olarak ne istediğinizi yapan bir Perl yardımcı programıdır. Bu durumda:
rename 's/\.htm$/.html/' *htm
veya alt dizinleri de kullanıyorsanız
(Bash 4.0 ve globstar ayarını gerektirir: shopt -s globstar
)
rename 's/\.htm$/.html/' **/*htm
rename
perl ile gelir ve temelde her unix bugünlerde perl ile gelir.
shopt -s globstar
(varsayılan olarak kapalı) kullanılabilir. Ayrıca, Linux ve Unix'in klasörlerden çok dizinleri vardır.
for file in *.htm; do
mv $file `basename "$file" .htm`.html
done
Etrafında ilk kez bir echo
önünde deneyin mv
.
Orijinal belgenizdeki sorun, " mv *.htm *.html
" öğesinin *
kabuk tarafından işlenmesidir, bu nedenle mv
komut, geçerli dizindeki tüm .htm ve .html dosyalarının bir listesini görür. Başka bir deyişle, " mv foo.htm bar.htm stuff.htm six.htm file.htm
" gibi bir şey . mv, yalnızca sonuncusu bir dizinse, ikiden fazla argümanla nasıl başa çıkılacağını bilir.
mv
işe yaramayacağını açıkça ortaya koyar .
En iyi alet mmv'dir .
mmv \*.htm #1.html
" GNU / Linux Komut Satırı Araçları Özeti " ndeki diğer kullanım örnekleri (ve diğer araçların) .
#
.
Util-Linux-ng (Fedora) paketi bulunur rename
tarafından anlatılana benzer komutu TRS-80 . Bu şekilde kullanabilirsiniz:
rename .htm .html *.html
ren *.htm *.html
Windows'ta çalışacak.