Linux 系统中经常会遇到批量替换文件内容的命令,有如下几个场景
1、批量替换文件夹内文件的内容。
配合sed 和 grep两个命令使用。
1.1 在一个文件中替换字符串的命令。
sed -i "s/beijing/shanghai/g" tmp.log
1.2 在一个目录下,批量查找文件neirong
grep "beijing" -rl yourDir
1.3 批量替换文件夹内文件内容。
sed -i "s/beijing/shanghai/g" `grep "beijing" -rl yourDir`
2、批量替换文件名、文件夹的命令。
配合sed 和 find 命令一起使用。
2.1 find 查找文件名和文件夹
find ./ -name beijing* // 查找当前目录下的以beijing开头的文件名。
find ./ -name beijing* -type d //查找当前目录下以beijing开头的文件夹。
2.2 sed 用于替换输出。
sed 's/beijing/shanghai/' test.log //文件中查找内容。 find ./ -name beijing*|sed 's/\(.*\)\(beijing\)\(.*\)/mv \1\2\3 \shanghai\3/'|sh //文件夹查找文件,并将文件名转化为 mv srcFile newFile 模式,最后应用管道命令。
find ./ -name beijing* -type d |sed 's/\(.*\)\(beijing\)\(.*\)/mv \1\2\3 \1shanghai\3/'|sh