linux的rename命令有两个版本,一个是c语言版本的,一个是perl语言版本的,判断方法:
输入man rename 看到第一行是:
RENAME(1) Linux Programmer’s Manual RENAME(1)
这个就是C语言版本的
而如果出现:
RENAME(1) Perl Programmers Reference Guide RENAME(1) 则是Perl版本的了
C语言版本格式:rename 原字符串 新字符串 文件名
Perl语言版本格式:rename 's/原字符串/新字符串/' 文件名
rename支持正则表达式
例子:
字母的替换 rename "s/AA/aa/" * // 把文件名中的AA替换成aa
修改文件的后缀 rename "s//.html//.php/" * // 把.html 后缀的改成 .php后缀
批量添加文件后缀 rename "s/$//.txt/" * // 把所有的文件名都以txt结尾
批量删除文件名 rename "s//.txt//" * // 把所有以.txt结尾的文件名的.txt删掉
1、直接用mv移动命令mv a**.cpp b**.c
#移动以a开头.cpp文件并重命名成以b开头.c文件2、用文本处理工具awk *** 作
ls a*.cpp | awk '{n=$0sub(/^a/,"b")sub(/\.cpp$/,".c")system("mv "n" "$0)}'
#ls命令查看所有a开头的.cpp文件,然后|(管道符)传递到awk命令处理,用sub实现第一个位置的替换^a以a开头的替换成b开头。3、用for循环字符串截取方法
for filename in a*.cpp
do
len=${#filename}
newName="b"${filename:1:len-3}
mv $filename $newName
done4、用sed的正则表达式替换
for filename in a*.cpp
do
newName=`echo $filename|sed -r 's/^a(.*\.c)pp$/b\1/'`
#匹配以a开头以.c结尾的文件,然后替换成b
mv $filename $newName
done
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)