这个问题基本上是这个的副本:https ://askubuntu.com/questions/91740/how-to-move-all-files-in-current-folder-to-subfolder
但相反,我问的是如何使用 oh-my-zsh 在 Mac OS X 终端中执行此操作。
我对给出的解决方案的问题是它们似乎在我的终端中不起作用(在这里用“oldCodeBase”替换问题中的文件夹“new”)
[~/Sid/Moonshine_Machine, 127, master+3]: mv !(oldCodeBase) oldCodeBase
zsh: number expected
它在这里期望的数字是多少?
转向另一个建议的解决方案是使用 shopt 命令。
但我似乎没有可用的 shopt 命令:
~/Sid/Moonshine_Machine, 1, master+3]: shopt -s extglob dotglob
zsh: command not found: shopt
所以在这一点上,这两种解决方案似乎都不起作用。
编辑:
我发现 zsh 中的“setopt”似乎是与“shopt”相当的命令,但会导致以下问题
[~/Sid/Moonshine_Machine, 127, master+3]: setopt -s extglob dotglob
setopt: no such option: extglob
!(pattern)
是一个 ksh glob 运算符。shopt
是 bash shell 的内置命令,用于启用其选项之一(未使用 启用的选项set -o
)。bash
的extglob
选项启用 ksh 扩展 glob 运算符的子集。在
zsh
中,否定与^
extendedglob
操作员一起使用,正如@mdmay74 已经显示的那样,并且 zsh 只有一组选项全部用set -o
/切换set +o
(历史上setopt
/unsetopt
)。所以你会使用:笔记:
--
如果有以开头的文件名,则需要-
(D)
还需要移动隐藏文件(在 中bash
,您将使用shopt -s dotglob
)。zsh 还有一个
kshglob
选项来启用 ksh 的扩展 glob。但由于这些操作比 zsh 自己的扩展 glob 操作符使用起来更麻烦,因此您通常只将其用作 ksh 仿真 (emulate ksh
) 的一部分,用于帮助解释为 ksh 编写的脚本。(请注意,除非您还禁用了该选项,否则
!(oldCodeBase)
仅此一项将不起作用,否则将被视为 glob 限定符)。bareglobqual
(oldCodeBase)
更一般地说,您不能假设在一种语言中有效的某件事在另一种语言中也同样有效,除非该事物来自它们共享的标准或共同遗产。
bash
并且zsh
两者都有 Bourne、Korn 和 Csh 的传统,每个都有一种模式,在这种模式下,它们都试图与 POSIX 兼容,并且还相互复制了一些特性,但它们的语法通常不同。在您引用的链接中,阅读那里接受的答案:在其后面的评论中,有人问 zsh 的等价物是什么,@MrT 回复:
我会把它放在评论中,但我还不能这样做...... :-)