*nix 中通配文件名子字符串的最简单方法是什么?

spi*_*ate 3 unix bash

我想做一些事情,比如作为通配符匹配的一部分,并像正则表达式匹配一样使用它。命令可能看起来像这样

cat foo_* | python magic.py > magic_*
Run Code Online (Sandbox Code Playgroud)

如果我的文件名是

   foo_biz
   foo_baz
Run Code Online (Sandbox Code Playgroud)

我希望输出在名为

   magic_biz
   magic_baz
Run Code Online (Sandbox Code Playgroud)

有效地改变文件名foo_*magic_*

是否可以在 shell 命令中执行此操作?我正在使用bash,但其他 shell 的答案也很好。

Gor*_*son 5

如果我理解你想要做什么,你可以完成它,但需要更多的工作:

for f in foo_*; do python magic.py <"$f" >"${f/foo/magic}"; done
Run Code Online (Sandbox Code Playgroud)

(注:我也换成了无用的使用猫<重定向。)