我想用另一个文件更改文件中的文本行,例如:我拥有的文本
导出 GEOFIL='/afs/in2p3.fr/home/throng/antares/DETECTOR/r12_c00_s01.det 1 1'
我想用新的替换它
导出 GEOFIL='/pbs/throng/antares/DETECTOR/r12_c00_s01.det 1 1'
应对当前目录中的所有文件执行此操作
答案1
使用sed
命令:
sed -i -e 's#/afs/in2p3.fr/home/#/pbs/#' the_filename
笔记:
-i
选项用于更改名为输出的文件的内容,the_filename
创建一个新文件。#
在 seds
命令中使用字符,因为您的文本包含/
字符
要对当前目录的所有文件执行它:
find . -maxdepth 1 -type f -exec sed -i -e 's#/afs/in2p3.fr/home/#/pbs/#' {} \;
笔记:
.
: 在当前目录下工作-type f
:仅适用于标准文件-maxdepth 1
:仅在当前目录(深度 = 1)中工作,不适用于子目录{}
替换为find
命令找到的文件名\;
-exec
是选项的结尾