如何批量修改文件的扩展名?
如何把一个文件夹下的文件扩展名HTML全部改成html?谢谢! 用正则表达式一个命令就可以解决了,可惜我水平差,不会... :oops:那就暂时先写个脚本来代替罢,反正也能用:
#!/usr/bin/perl
#Rename the HTML file to html
@files=`ls -1 $ARGV[0]`;
foreach $file(@files){
$leng=length($file)-1;
$file=substr($file,0,$leng);
$file_type=substr($file,$leng-4,$leng);
$file2=substr($file,0,$leng-4);
$file2=sprintf("%shtml",$file2);
if($file_type eq "HTML"){
printf("mv $file $file2\n");
rename($file,$file2);
}
}
例如将些文件保存名为2html.pl,赋予运行权限:chmod u+x 2html.pl,然后运行./2html.pl 文件夹名,如果省略参数则对当前文件夹操作。 楼主的情况rename最简单
man rename 有:
rename .htm .html *.htm
所以
rename.HTML .html *.HTML就可以了 谢谢xiaocong213
用rename终于搞定了. 呵呵,原来有这功能,咱还未用过...:oops: 楼主的情况rename最简单
man rename 有:
rename .htm .html *.htm
所以
rename.HTML .html *.HTML就可以了
好,我还准备显吧显吧呢 正则表达式该是 s///g
就是不知道怎么用 找本书看,有很多的,耐心读读
呵呵
原来还有这功能,LINUX命令功能真是强大,不过不要我的LINUX中没有这个命令呀 :-( 谢谢,我会尝试以下,呵呵 rename 似乎就是个perl脚本吧自家的rename
#!/bin/bash
# written by tears
# [email protected]
# 2004-08-17
if [ $# -lt 2 ]; then
echo "Usage: `basename $0` str1 str2 str3 ... strlast">&2
exit 1
fi
for last in $@
do
:
done
for i in $@
do
if [ "$i" = "$last" ]; then
continue
fi
for n in *
do
if [ -d $n ]; then
continue
fi
file_basename=${n%%.$i}
if [ "$file_basename" != "$n" ]; then
echo "$n -> ${file_basename}.$last"
mv "$n" "${file_basename}.$last"
fi
done
done
rename Html HTML html
可以把目录下所有扩展名为Html HTML的文件更改为html 實用
頂 顶... 我怎么发觉在用rename时还是存在很大局限性:
1.我的系统(RH ES3.0)在使用rename .htm .html *.htm时得到的不是htm,而是html。
2.现有三个文件:1.c、2.doc、3.txt,我用rename .c .doc .txt *.c 得到的却是:
1.doc2.doc3.txt
这与我要求的.c的后缀相差甚远!
反复实验,我发现在我的系统中,用rename好像并不能实现“批量修改文件的扩展名”的功能。
1.不能批量修改,如上所示。
2.在修改时甚至与文件的排列次序有关:如果文件为:
1.html 2.htm3.htm
在用rename .htm .html *.htm时它会报告
rename: renaming *.htm to *.html failed: 没有那个文件或目录
如果文件为:
1.htm 2.html3.html
则得到的是:
1.html 2.html3.html
.........................
反正结果千奇白怪!!!
请问这是怎么回事??? :?::?:
页:
[1]
2