【发布时间】:2015-12-08 12:45:03
【问题描述】:
我正在寻找 shell 中的简单解决方案来自动执行脚本,所有主机中的文件夹名称都不同,唯一的技巧是顶级文件夹名称是带有下划线和连字符的数字。为了切换到没有字母的目录,我无法对其进行良好的正则表达式。任何猜测(除了 extglob 或仅使用 shell 通配符模式)肯定会对我有所帮助。
例如;如何切换到cd /home/user/123_456-56/,使用通配符模式,这样我就可以避免切换到cd /home/user/123_456-56_12XyDf89/
谢谢!提前。
【问题讨论】:
-
有了
extglob,这很容易。cd !(*[!-0-9_]*) -
感谢tripleee,我无法在生产环境中启用
extglob。我有 1000 台服务器来运行这个脚本,必须获得启用extglob的权限。有没有其他方法可以做到这一点,使用 shell 通配符模式? -
@simer 是什么阻止你只为你的脚本启用它?
-
@Tensibai 没有什么可以阻止的,它只是要遵循的过程开销。
-
@simer ???它必须放在板凳上,但我很确定在你的
cd后跟shopt -u extglob(如果真的需要)之前对shopt -s extglob的任何解决方法都将是丑陋的、脆弱的,并且会带来更多的开销。您不会通过在脚本中调用shopt来修改系统,它只会应用于脚本 AFAIK 的上下文。
标签: regex linux bash shell wildcard