sed 2d foo| sed '$a\4' | sed 's#a:b#c:b#g' >foo1
直接对foo处理
sed -i 2d foo | sed -i '$a\4' foo | sed -i 's#a:b#c:b#g' foo
rename的参数rename命令的格式:
rename
[
-v
]
[
-n
]
[
-f
]
perlexpr
[
files
]
第一个参数:被替换掉的字符串
第二个参数:替换成的字符串
第三个参数:匹配要替换的文件模式
例子:rename
main1.c
main.c
main1.c
将main1.c重命名为main.c
rename支持通配符
?
可替代单个字符
*
可替代多个字符
[charset]
可替代charset集中的任意单个字符
例子:文件夹中有这些文件foo1,
...,
foo9,
foo10,
...,
foo278,
如果使用
rename
foo
foo0
foo?
会把foo1到foo9的文件重命名为foo01到foo09,重命名的文件只是有4个字符长度名称的文件,文件名中的foo被替换为foo0。
如果使用
rename
foo
foo0
foo??
foo01到foo99的所有文件都被重命名为foo001到foo099,只重命名5个字符长度名称的文件,文件名中的foo被替换为foo0。
如果使用
rename
foo
foo0
foo*
foo001到foo278的所有文件都被重命名为foo0001到foo0278,所有以foo开头的文件都被重命名。
如果使用
rename
foo0
foo
foo0[2]*
从foo0200到foo0278的所有文件都被重命名为foo200到foo278,文件名中的foo0被替换为foo。
rename支持正则表达式
例子:
字母的替换rename
"s/aa/aa/"
*
//把文件名中的aa替换成aa
修改文件的后缀rename
"s//.html//.php/"
*
//把.html
后缀的改成
.php后缀
批量添加文件后缀rename
"s/$//.txt/"
*
//把所有的文件名都以txt结尾
批量删除文件名rename
"s//.txt//"
*
//把所有以.txt结尾的文件名的.txt删掉
也可以参考《linux就该这么学》中的章节内容尝试解决。
rename abcdefg abcLinux中修改文件名,很多人甚至很多Linux书会介绍说用mv命令,其实是mv只能修改单个目标的名称,真正修改文件名还是和windows一样,使用rename,而且rename自带非常实用的批量改名功能。
先说mv修改文件名或文件夹的用法:
mv 需要修改的名称 修改后的名称
mv用于改名的用法很简单,只能用于单个目标。
下面介绍rename的使用方法。假如有foo1 foo2 foo3...到foo99的文件,如果想把数字部分都改为2个字符等宽,只需要把1位数字1、2、3...到9改为01、02、03...到09,使用mv就无法实现了,如果使用rename,输入下面命令即可:
rename foo foo0 foo?其中?代表一个字符。除了问号,通配符还有*,代表任意字符,如:
rename .htm .html *.htm上面命令将把*.htm文件改为*.html。
补充:如果只用于单个文件名的修改,使用方法和mv一样,可以省略第三个参数。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)