如何在bash中引用glob扩展文件名?

如何在bash中引用glob扩展文件名?,bash,Bash,正在寻找引用glob扩展文件名的通用解决方案 假设我有两个现有文件a.txt和b.txt,每个都包含单词hello 是否可以使用1行程序在两个文件中用world替换hello,并覆盖它们a.txt和b.txt都应该包含world 不确定如何引用扩展文件名 cat*.txt|sed's/hello/world/g'>expandedFileName 我应该用什么来代替expandedFileName 我想覆盖现有的原始文件。您可以使用ed等工具就地编辑感兴趣的文件: [ab].txt中文件的;做

正在寻找引用glob扩展文件名的通用解决方案

假设我有两个现有文件
a.txt
b.txt
,每个都包含单词
hello

是否可以使用1行程序在两个文件中用
world
替换
hello
,并覆盖它们
a.txt
b.txt
都应该包含
world

不确定如何引用扩展文件名

cat*.txt|sed's/hello/world/g'>expandedFileName

我应该用什么来代替
expandedFileName


我想覆盖现有的原始文件。

您可以使用
ed
等工具就地编辑感兴趣的文件:

[ab].txt中文件的
;做
printf“%s\n”g/hello/s/hello/world/g'w|ed-s“$file”
完成
将在
a.txt
b.txt
中将每次出现的
hello
更改为
world
,并保存更改的文件

或者使用
perl
及其就地编辑模式:


perl-pi-e's/hello/world/g'[ab].txt

某些版本的
sed
还支持用于就地编辑的
-i
选项,但它是非标准的,是否需要强制或可选参数取决于实现,因此我不建议将其作为一般解决方案。

可能类似于*.txt中F的
;做回显“$F”;猫“$F”| sed's/hello/world/g';done>expandedFileName
sed's/hello/world/g'*.txt
perl-pi-e's/hello/world/g'a.txt b.txt
?管道中可能有几个glob,shell如何知道哪个glob应该用作“expandedFileName”?请注意,使用
将输出发送到您正在读取的同一文件作为输入将删除该文件。看见