使用find和sed批量替换文本中的字符串
在linux批量替换字符串怎么办,一开始想着直接用sed带-r之类的迭代式的方法来替换,但是发现sed没有迭代的参数,只能配合使用find来获取文件再利用sed来进行替换。
目录:
- 批量替换文本中的字符串
- find扩展使用方法
- 以文件名查找文件
- 一些find使用例子
- find的进阶与优化
- 通过修改时间查找文件
- 结合grep通过文件内容查找文件
- 查找文件并进行其他修改文件操作
批量替换文本中的字符串
这里直接查看查找包含字符串的文件并替换的用法
find . -name "*.conf" -exec sed -i 's/original/newstring/g' '{}' +;
该命令分为两部分 第一部分的意思是查找当前目录下的conf文件
find . -name "*.conf"
第二部分exec运行sed命令作字符串的替换,把original替换为newstring
-exec sed -i 's/original/newstring/g' '{}' +
find扩展使用方法
find的一些用法
以文件名查找文件
find /etc -name "*.conf"
第一个参数find查询的目录,-name表示以文件名称来区分,*.conf,匹配以.conf结尾的文件
一些find使用例子
** 命 令** | 作 用 |
---|---|
find . -name name.txt | 找寻当前目录下名称为name.txt的文件 |
find /home -name *.jpg | 找寻/home目录下名称以.jpg结尾的文件 |
find . -type f -empty | 查找当前目录下的空文件 |
find /home -user root -mtime 7 -iname “.txt” | 找出/home目录下7天内root编辑过的以.txt结尾的文件 |
find的进阶与优化
默认情况下,find命令并不会跟踪链接文件,如果需要让find跟踪链接到的源文件进行匹配的话,使用-l参数可以达到目的。 find使用过滤参数提高命令执行效率,-01,-02,-03分别对应不同的搜索策略,01为默认,以文件名优先匹配,02先文件名再文件类型,03是最高级别优化。 优化参数及其意义如下:
** 参 数** | 意义 |
---|---|
-O1 | 文件名优先 |
-O2 | 文件名再文件类型 |
-O3 | find软件自动排序 |
-maxdepth X | 最大文件夹搜索深度 |
-iname | 忽略大小写 |
-not | 取反 |
-type f | 匹配文件 |
-type d | 匹配目录 |
通过修改时间查找文件
find命令可以通过文件修改时间来查找文件,这在服务器被入侵的时候除了查看日志另外的一种可以起到追溯源头的作用。
find /home/wwwroot/ -name "*.php" -mtime 2
查找网站根目录/home/wwwroot/下两天内被编辑过的php文件,可以快速找到黑客上传的php的webshell文件。
结合grep通过文件内容查找文件
查找文件夹某个包含特定内容的文件
find /home/wwwroot/ -type f -exec grep "www.bobobk.com" '{}' \; -print
查找根目录下包含www.bobobk.com的文件并把该行打印出来,当然这里除了使用exec外也可以使用linux中的管道命令。
find /home/wwwroot/ -type f -print | xargs grep "www.bobobk.com"
查找文件并进行其他修改文件操作
这才是最重要的功能,通过查找功能找到文件并使用命令对文件进行处理。只需要在find命令末尾通过-exec 加上文件操作命令即可实现。
find . -name "nginx.conf" -exec chmod 600 '{}' \;
查找nginx.conf文件并把文件权限更改为600,使用方法是-exec加上处理命令最后以’{}’ ;结尾即可。
find . -name "*.htm" -delete
查找当前目录下的htm文件并删除。。
如果查找的是对文件夹,要对文件夹处理就是execdir
find /home/wwwroot/default/ -type d -execdir ls '{}' \; -print
查找/home/wwwroot/default/目录下的文件夹并列出目录下的文件。
总结:
这里由内容批量替换顺便系统学习了下find的各种功能,通过把linux中的文件查找命令find做一个总结,方便以后的使用查询。主要介绍通过文件改变时间查找最新文件,文件名查找文件,以及查找到文件后如何对文件进行操作,在文件内容的批量替换中起到重要作用。
参考文件: (Find Files in Linux, Using the Command Line)[https://www.linode.com/docs/tools-reference/tools/find-files-in-linux-using-the-command-line/]
- 原文作者:春江暮客
- 原文链接:https://www.bobobk.com/458.html
- 版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。