linux下批量查询文件内容字符串并替换

linux下批量查询文件内容字符串并替换,第1张

查找批量替换文件时,去除某种类型的文件,下面表示在./salt/*下的所有文件中,不包括tar.gz结尾的文件,搜索包含有node01字符串的文件

grep "node01" -rl ./salt/* --exclude=*.tar.gz

其实这里的 -r表示递归,-l表示输出文件名

也可以将 -rl替换为-rn,-n表示是哪一行,会输出行号详细信息

grep "node01" -rn ./salt/* --exclude=*.tar.gz

替换字符串:

把./salt/*目前下所有文件进行遍历,查是否包含node01字符串的,不包括tar.gz结尾的文件。然后把node01用test01进行批量替换。

grep "node01" -rl ./salt/*  --exclude=*.tar.gz | xargs sed -i 's/node01/test01/g'

Linux下修改文件名有mv和rename。其中mv命令只能对单个文件重命名,这是mv命令和rename命令的在重命名方面的根本区别。

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删掉


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

原文地址: https://outofmemory.cn/tougao/7957884.html

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

发表评论

登录后才能评论

评论列表(0条)

保存