我创建一个小脚本来帮助将一些文件符号链接到特定目录(在本例中,它从克隆的存储库到主机操作系统(在本例中为 macos)上的主题文件夹),无论如何,问题是搅拌机创建新文件夹来管理每个版本的首选项本身
3.1
└ Config
└ Scripts
└ Startup
3.2
└ Config
└ Scripts
└ Startup
。等等
我发现我可以使用“*”通配符来表示这些,但我需要一种方法来为 ln 命令选择具有最高数值的文件夹
如果有任何帮助的话,我到目前为止想出的命令只是
ln -sf /'path to theme file' '.../'directory with highest numerical value'/.../interface-theme')
答案1
和zsh
:
() {
ln -sf -- /'path to theme file' $argv[-1]/interface-theme
} '.../'*'/...(/n)
其中n
glob 限定符启用numericglobsort
(在之后而不是在和之间3.10
排序)该 glob 并将glob 限制为以下类型的文件3.9
3.1
3.2
/
目录(替换为-/
也考虑到目录的符号链接;注意它*
本身确实遵循符号链接)。我们将有序的目录列表传递给匿名函数,在$argv[-1]
该函数中我们使用命令中的最后一个参数 ( ) ln
。
或者,使用e
glob 限定符附加链接名称并[-1]
选择最后一个 glob 扩展:
ln -sf -- /'path to theme file' '.../'*'/...(/n[-1]e[REPLY+=/interface-theme])
使用bash
(GNU shell)4.4 或更新版本以及 GNU 实用程序,您可以执行以下操作:
print0() {
(( $# == 0 )) || printf '%s\0' "$@"
}
readarray -td '' dirs < <(
shopt -s nullglob
print0 '.../'*'/...'/ |
sort -zrV
) &&
(( ${#dirs[@]} )) &&
ln -sf -- /'path to theme file' "${dirs[1]}"interface-theme
-V
(又名)--version-sort
进行类似于zsh
的n
glob 限定符的排序。*/
类似于zsh
's *(-/)
(选择目录和目录的符号链接),只是/
附加了 a。
或者假设zsh
可用,你可以这样做:
zsh -c '
ln -sf -- /"path to theme file" ".../"*"/...(/n[-1]e[REPLY+=/interface-theme])'