sed

Linux文件和文件夹的查找、替换、删除

持续更新Linux常用查找替换命令使用实例,包括各种find, sed, grep等

#搜索.log文件
find / -name ‘*.log’ 

#在log文件中查找关键词Abc
grep Abc /log 

#查找替换log文件的Abc为123
sed ‘s/Abc/123/g’ log 

#递归查找和替换
find . -type f -print0 | xargs -0 sed -i ‘s/原字符串/新字符串/g’ 
find . -name ‘*.html’ | xargs perl -pi -e ‘s/原字符串/新字符串/g’ #目录权限 chattr -i . / chattr -a .
sed -i ‘s/原字符串/新字符串/g’ `grep ‘原字符串’ -rl /查找目录/ –include “*.文件类型”`

#批量复制文件到所有子目录
find ./ -maxdepth 1 -type d -exec cp -r path/file {} \; 

#批量删除A111文件夹
find . -type d -name A111 -exec rm -rf {} \;
find . -type d | grep A111$ | xargs rm -rf

#批量删除d111和d222文件夹
find . \( -name d111 -o -name d222 \) -type d -exec rm -fr "{}" \;

#find并统计数量
find . -type f -print | wc -l 

#查找并批量删除空文件夹
find . -type d -empty -delete

#查找并批量删除所有.log文件
find . -name ‘*.log’ -type f -delete

#过滤111开头的结果
grep -v 111

#查找当前文件夹夹下的一级子目录中修改时间为 2022/2/22的abc.txt文件并删除
find . -maxdepth 2 -type f -name "abc.txt" -newermt '2022-02-22' | xagrs rm -rf
阅读更多Linux文件和文件夹的查找、替换、删除

Linux Sed 批量替换多个文件中的字符串

Linux下批量替换多个文件中的字符串的简单方法。用sed命令可以批量替换多个文件中的字符串。

用sed命令可以批量替换多个文件中的字符串。

sed -i 's/原字符串/新字符串/g' `grep '原字符串' -rl /查找目录/ --include "*.文件类型"`

例如:我要把www目录下的baidu替换为google,执行命令:

sed -i "s/baidu/google/g" `grep "baidu" -rl /www`

这是目前linux最简单的批量替换字符串命令了!
具体格式如下:

sed -i "s/oldString/newString/g" `grep "oldString" -rl /path`

解释一下:

-i 在文件中直接替换,而不是输出到终端
"s/oldstring/newstring/g"  替换字符串的语法,后面的g表示替换所有的
`grep "oldstring" -rl path` : 注意该命令两边的引号。
-r:在目录中递归查找
-l: 输出找到包含 oldstring 的文件名

实例代码:

sed -i "s/baidu/google/g" `grep "baidu" -rl /usr/aa`
sed -i "s/baidu/google/g" `grep "baidu" -rl ./` 

其实就是一个sed 命令

sed -i "s/oldstring/newstring/g" `包含oldstring的文件`

而其中包含oldstring的文件是同过 grep "oldstring" -rl path 这条命令找出来的

参考文章:https://linux.cn/article-11367-1.html

阅读更多Linux Sed 批量替换多个文件中的字符串