我有两个不同的文件A.txt和B.txt,它们都包含相同的字符串。
我想使用sed
命令来替换字符串,但是我不想覆盖A.txt和B.txt。
实际上,我想遍历文件,然后对两个文件都执行以下操作:
sed 's/myString/myNewString/g' A.txt > updatedA.txt
我可以使用什么技巧以这种方式将输出重定向到所需的任意数量的文件?假设我有x * .txt文件。
谢谢。
答案 0 :(得分:1)
使用for
循环访问当前目录中的所有.txt文件:
for file in *.txt; do
sed 's/myString/myNewString/g' "$file" > "updated$file"
done
每个目录只能使用此脚本一次。
答案 1 :(得分:0)
这可能对您有用(GNU并行):
parallel sed 's/myString/myNewString/g' {} \> updated{} ::: *.txt
这将循环遍历当前目录中的所有txt文件,并对以updated
为前缀的新文件进行修改/复制。
如果您只想为具有更改的文件创建文件,请使用:
parallel grep myString {} \&\& sed 's/myString/myNewString/g' {} \> updated{} ::: *.txt
或通过目录中的所有txt
文件重新进行诅咒,请使用:
find . -name '*.txt' | parallel sed 's/myString/myNewString/g' {} \> {//}/updated{/}