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

时间:2015-12-08 12:45:04

标签: regex linux bash shell wildcard

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

例如

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

谢谢!提前。

2 个答案:

答案 0 :(得分:0)

可以使用child_div

find

请注意,cd `find -maxdepth 1 -type d -regex '\./[!_0-9]+'` 必须匹配整个文件名,包括目录部分。

答案 1 :(得分:0)

只需一个简单的循环:

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

cd "$(numericdir)"

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