如何将目录更改为没有字母的文件夹名称?
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)"
您可以传入目录参数以查找该目录的数字子目录。
我正在 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)"
您可以传入目录参数以查找该目录的数字子目录。