用find+exec命令结合rename命令可实现文件名“部分替换”
因为存有目录的替换,目录替换后,就无法继续搜索原目录了,所以,需要多次执行才能完成所有目录的替换。
while [ 1 ]
do
find . -name "aaa*" -exec rename aaa bbb {} \;
if [ $? -eq 0 ] #如果替换中有错误,则上面命令执行结果会返回非0
then
break;
fi
done
#注意,此命令缺陷是,当同一目录下,有aaa123文件,也有bbb123文件,则原bbb123文件将会被aaa123所覆盖!!
rename命令格式说明:
rename from to file...
第一个参数from:被替换掉的字符串
第二个参数to:替换成的字符串
第三个参数file:匹配要替换的文件模式 可以是单文件,也可以是匹配模式(多文件,如aaa* aaa? aaa?? ) *匹配多字符, ?匹配单字符
这个简单的命令完成不了。用脚本或者是c/c++写个小程序。
首先将当前目录及其子目录和所有文件取出来,然后循环去匹配是否以aaa开头,如果是以aaa开头的则将aaa替换成bbb,后面部分不变。
mv aaa bbb
OK?
mv aaa bbb