linux下如何通过一条命令快速文本编辑,删除、增加和替换?

linux下如何通过一条命令快速文本编辑,删除、增加和替换?,第1张

处理foo文件,内容输出到foo1

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 abc

Linux中修改文件名,很多人甚至很多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一样,可以省略第三个参数。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/7534079.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-06
下一篇 2023-04-06

发表评论

登录后才能评论

评论列表(0条)

保存