大数据时代我们经常要批量处理一些文件,有一部分是重复的各种字符串操作,这种我们就可以借助linux已经有的工具批量完成我们的操作。

1)批量查找含有某字符串的文件

# 用grep来批量查询当前目录中含有字符a的文件并显示
grep "a" -rl ./

2)批量查找含有某后缀名的文件

# 用find来查找当前目录中文件名为txt的文件(-maxdepth指文件搜索深度为5层级)
find ./ -maxdepth 5 -name "*.txt"

3)批量替换文件中的字符串

# 用sed来批量替换文件中的字符,如下将文件中四个空格批量替换成Tab
sed -i "s/   /\t/g" FILENAME

4)对含有指定内容的文件执行批量替换

# 组合命令
# 用`来给sed传递参数
sed -i "s/a/A/g" `grep "a" -rl ./`
# 用xargs给sed传递参数
grep "a" -rl ./ | xargs sed -i "s/a/A/g"

5)对指定文件进行批量内容替换

# 组合命令
# 示例1
sed -i "s/A/a/g" `find ./ -maxdepth 5 -name "*.txt"`
# 示例2
find ./ -maxdepth 5 -name "*.txt" | xargs sed -i "s/a/A/g"

以上就是批量操作文件的所有方法了,今天偶然用到觉得蛮实用的,和大家分享。至于参考资料,我用了它一张截图,也是一个linux学习的教程。

参考资料:

1.https://www.educba.com/sed-command-in-linux/