Regex 正则表达式bash中的葡萄酒目录

Regex 正则表达式bash中的葡萄酒目录,regex,bash,wine,Regex,Bash,Wine,我正在编写一个小的shell脚本,在我的wine目录中启动一个程序。 我的挑战是我已经在多台机器上安装了它,有些机器有64台 有些是32位的,有些是英语的,有些是挪威本地人的 因此,$HOME/.wine/drive_c中的程序文件目录的名称可以更改 从程序文件,程序文件(x86),程序文件管理器等 到目前为止,我的bash行是: (cd $HOME/.wine/drive_c/[Pp]rogram*/... ; wine ...) 但是,[Pp]rogram*行不起作用,有人有好的建议吗?应

我正在编写一个小的shell脚本,在我的wine目录中启动一个程序。 我的挑战是我已经在多台机器上安装了它,有些机器有64台 有些是32位的,有些是英语的,有些是挪威本地人的

因此,
$HOME/.wine/drive_c
中的程序文件目录的名称可以更改 从
程序文件
程序文件(x86)
程序文件管理器

到目前为止,我的
bash
行是:

(cd $HOME/.wine/drive_c/[Pp]rogram*/... ; wine ...)

但是,
[Pp]rogram*
行不起作用,有人有好的建议吗?

应该可以,但是由于您在64位安装上同时拥有
程序文件和
程序文件(x86)
,因此这将始终扩展到
程序文件,这在您的情况下可能是错误的

我将使用以下方法动态确定正确的路径:

look_for='My Program/myprogram.exe'
for dir in "$HOME"/.wine/drive_c/[Pp]rogram*[Ff]*/; do
    if [ -e "${dir}${look_for}" ]; then
        cd "${dir}"
        wine [...]
        exit $?
    fi
done

这将遍历所有可能的“程序文件”目录,并检查
$look\u for
中指定的文件/目录是否存在于其下方。如果有,它会将
$look_for
cd
s的目录组件放入其中,然后从那里运行
wine

什么是“不起作用的”?发生了什么?请不要在标题中添加“[已解决]”以表示问题已解决。你可以通过接受一个答案来做到这一点(你已经这样做了)。@Dan SimonMyrland显然我在复制粘贴时犯了一个错误,因为我的解释没有反映代码片段。要将
cd
放入目录部分,您可能需要执行
cd“$(dirname“${dir}${look\u for}”)”
而不是
$look\u for
也包含目录组件,但我想您自己已经解决了这个问题:-)