この質問は基本的にこの質問と重複しています。https://askubuntu.com/questions/91740/how-to-move-all-files-in-current-folder-to-subfolder
しかし、Mac OS X端末でoh-my-zshを使ってこれを行う方法を尋ねています。
提供されたソリューションに関する私の問題は、私の端末で動作しないようです(質問の「new」フォルダを「oldCodeBase」に置き換えます)。
[~/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
答え1
!(pattern)
ksh glob 演算子です。shopt
オプションの1つを有効にするbashシェルの組み込みコマンドです(有効なオプションは使用されませんset -o
)。bash
オプションは、extglob
kshの拡張glob演算子のサブセットを有効にします。
のzsh
否定演算子^
extendedglob
は次のとおりです。@mdmay74が表示しました。zshには1つのオプションセットがあり、すべてset -o
/ set +o
(歴史的にはsetopt
/ unsetopt
)に切り替わります。したがって、次を使用します。
set -o extendedglob
mv -- ^oldCodeBase(D) oldCodeBase
メモ:
--
ファイル名が次から始まる場合は必須-
(D)
隠しファイルも移動する必要があります(ではbash
使用可能ですshopt -s dotglob
)。
kshglob
zshにはkshの拡張globを有効にするオプションもあります。ただし、これはzsh独自の拡張glob演算子よりも使用が難しいため、通常はemulate ksh
ksh用に書かれたスクリプトを解釈するのに役立つkshエミュレーション()の一部としてのみ使用されます。
set -o kshglob
mv -- !(oldCodeBase)(D) oldCodeBase
(!(oldCodeBase)
オプションを無効にしないと、このオプションだけでは機能しませんbareglobqual
。そうしないと(oldCodeBase)
グローバル修飾子として扱われます。)
より一般的には、ある言語で有効なものが他の言語でも有効であると仮定することはできません。もの共通の標準または共通の遺産から来る。どちらもBourne、Korn、Cshの伝統に従い、それぞれPOSIX互換モードを持ち、お互いの一部の機能もコピーしますが、一般的に構文が異なりますbash
。zsh
答え2
内部に協会あなたが引用した内容に対する許可された答えを読んでください。その後のコメントで、一人の人がzshに対応するものを尋ね、@MrTが答えました。
setopt extendedglob
zshで拡張グローバルモードを設定します。^
除外記号なのでmv ^new new
全部です。次に、zshで設定できるすべてのオプションを見て、setopt
拡張グローバルモードを無効にします。unsetopt extendedglob
コメントで付けることができましたが、まだそうではありませんでした... :-)