如何在bash中引用glob扩展文件名?
正在寻找引用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中文件的;做
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”?请注意,使用
将输出发送到您正在读取的同一文件作为输入将删除该文件。看见