我有100个文件,里面有我的名字,RAHUL
。我希望将其替换为另一个术语RAHUL2
。我有一个包含文件列表的文件,我想在sed中获取它来进行更改。
文件:
C:/desktop/file1.txt
C:/desktop/rahul/file1.txt
C:/desktop/rahul/file3.txt
C:/desktop/rahul/file4.txt
C:/desktop/rahul/file6.txt
C:/desktop/rahul/file8.txt
C:/desktop/rahul/file9.txt
并且在每个文件数据中,我想用RAHUL
RAHUL2
的所有出现
答案 0 :(得分:0)
我假设你在Windows上使用了一些Cygwin
环境,因为你有sed
。然后,您可以使用find
列出所有文件并在其上执行sed
:
find C:/desktop -type f -name 'file*.txt' -exec sed -i 's/RAHUL/RAHUL2/g' {} \;
如果您使用的是sed -i
,请备份原始文件但不确定该命令是否正常工作。这是因为sed -i
将覆盖原始文件。你被警告了。
答案 1 :(得分:0)
file*.txt
目录中搜索匹配C:/desktop
模式的所有文件,那么hek2mgl的答案很好。
现在,由于您已经有一个包含要编辑的文件列表的文件,因此这是另一种方法:
while read FILE ; do sed -i 's/RAHUL/RAHUL2/g' $FILE ; done < files_to_edit.txt
read
命令将逐行读取您的输入。输入为files_to_edit.txt
文件,由<
输入重定向运算符指示。
关于-i
选项的备注仍然有效:它会编辑你的文件,所以进行备份,或者至少先在几个文件上运行它(可能没有-i
选项,只是为了检查输出是什么)。