如何将目录更改为没有字母的文件夹名称?

How to change directory to a folder name not having alphabet letters?

我正在 shell 中寻找简单的解决方案来自动执行脚本,文件夹名称在所有主机中都不同,唯一的技巧是顶级文件夹名称是带有下划线和连字符的数字。为了切换到没有字母表的目录,我无法制作一个好的正则表达式。任何猜测(除了 extglob 或仅使用 shell 通配符模式)肯定会对我有所帮助。

例如;如何切换到 cd /home/user/123_456-56/ ,使用通配符模式,这样我就可以避免切换到 cd /home/user/123_456-56_12XyDf89/

谢谢!提前。

可以使用 find:

cd `find -maxdepth 1 -type d -regex '\./[!_0-9]+'`

注意ehe -regex必须匹配整个文件名,包括目录部分。

只需一个简单的循环即可:

numericdir () {
  for f in "${1+/}"*/; do
    case ${f#/} in *[!-0-9_]*/) continue;;
     *) echo "$f"; break;;
    esac
  done
}

cd "$(numericdir)"

您可以传入目录参数以查找该目录的数字子目录。