Regex 正则表达式不替换文件名

Regex 正则表达式不替换文件名,regex,linux,bash,Regex,Linux,Bash,我试图从脚本运行此命令,但它似乎与regex的值不匹配 cat /config.yml_orig >> /build/Product*/config.yml 它失败了 /build/Product*/config.yml: No such file or directory 目录的产品号一直在变化,所以我用*替换,但在命令行中,它无法与正则表达式匹配 当命令无法识别它的正则表达式时,解决方案是什么。通配符将只匹配现有文件,因此在创建文件时不能使用它。您需要使用通配符单独获取目录,

我试图从脚本运行此命令,但它似乎与regex的值不匹配

cat /config.yml_orig >> /build/Product*/config.yml
它失败了

/build/Product*/config.yml: No such file or directory
目录的产品号一直在变化,所以我用
*
替换,但在命令行中,它无法与正则表达式匹配


当命令无法识别它的正则表达式时,解决方案是什么。

通配符将只匹配现有文件,因此在创建文件时不能使用它。您需要使用通配符单独获取目录,然后附加文件名:

dir=$(echo /build/Product*)
cat config.yml_orig >> "$dir"/config.yml

该模式试图匹配整个内容,如果“config.yml”文件不存在,则该模式将失败。尝试:

cat config.yml_orig >> "$(echo /build/Product*)"/config.yml

Shell使用通配符(也称为“globs”),而不是正则表达式。是否可能有多个目录匹配
/build/Product*
?如果是这样,当有多个目录匹配该模式时,您的策略和当前的答案将以有趣和令人兴奋的方式出现