你提问前MAN一下好不好啊:) #rename .conf .ini *.conf :mrgreen:
如果文件没有后缀的话,用什么命令批量改名呢? :?: 你man 下rename嘛!也许语法有点不同吧!我也用ES 3不过没试过! #!/bin/bash
for f in *.*;
do
ext=`echo $f|awk -F. '{print $2}'`;
base=`basename "$f" .$ext`; mv "$f" "$base".$1; done very good 我认为在Linux中根本不存在什么扩展名。用remove 可以改名的。不过就是不知道怎么批量的改。用s /str1/str2/g 好象就只是用在vi里的。不能用在目录的。不知道这样行不行:remove \*.htm 呵呵,MAN确实是个好命令啊 rename命令格式很固定
rename xx yy *zz?
固定3个参数,第3个参数使用通配符
真确理解:
将满足通配符*zz?(当然通配符有很多表达方式)的所有文件找出;接着在每个找出的文件名中找到含有xx的部分,将xx替换成yy,如果某个找出的文件名没有含有xx就不进行任何操作,如果某个找出的文件名含有多个xx就只将第一个xx替换成yy。
例子:
# ls
aabbccaabbcc.html aabb.html bbcc.html ccdd.html tt.txt
# rename bb ww *tml
# ls
aawwccaabbcc.html aaww.html ccdd.html tt.txt wwcc.html
#
说明:先查找符合*tml文件,tt.txt被首先排除;aabbccaabbcc.html有两个bb,但只改了第一个bb为ww,ccdd.html符合前面的通配符,但没有bb部分,因此不动。
顺便说一句,改单个文件名用mv命令。 不用rename的话简单点的有:
for f in ./*.HTML;do mv $f ${f%.HTML}.html ;done 还有一个:
find . -name '*.HTML' -exec mv {} `echo {}|sed 's/\.HTML/\.html/' ` \; mv *.HTML *.html krename 呵呵,厲害
页:
1
[2]