Mac OS Xで、フォルダ内のすべてのファイルをサブフォルダのあるzshに移動する方法は?

Mac OS Xで、フォルダ内のすべてのファイルをサブフォルダのあるzshに移動する方法は?

この質問は基本的にこの質問と重複しています。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オプションは、extglobkshの拡張glob演算子のサブセットを有効にします。

zsh否定演算子^ extendedglobは次のとおりです。@mdmay74が表示しました。zshには1つのオプションセットがあり、すべてset -o/ set +o(歴史的にはsetopt/ unsetopt)に切り替わります。したがって、次を使用します。

set -o extendedglob
mv -- ^oldCodeBase(D) oldCodeBase

メモ:

  • --ファイル名が次から始まる場合は必須-
  • (D)隠しファイルも移動する必要があります(ではbash使用可能ですshopt -s dotglob)。

kshglobzshにはkshの拡張globを有効にするオプションもあります。ただし、これはzsh独自の拡張glob演算子よりも使用が難しいため、通常はemulate kshksh用に書かれたスクリプトを解釈するのに役立つkshエミュレーション()の一部としてのみ使用されます。

set -o kshglob
mv -- !(oldCodeBase)(D) oldCodeBase

!(oldCodeBase)オプションを無効にしないと、このオプションだけでは機能しませんbareglobqual。そうしないと(oldCodeBase)グローバル修飾子として扱われます。)

より一般的には、ある言語で有効なものが他の言語でも有効であると仮定することはできません。もの共通の標準または共通の遺産から来る。どちらもBourne、Korn、Cshの伝統に従い、それぞれPOSIX互換モードを持ち、お互いの一部の機能もコピーしますが、一般的に構文が異なりますbashzsh

答え2

内部に協会あなたが引用した内容に対する許可された答えを読んでください。その後のコメントで、一人の人がzshに対応するものを尋ね、@MrTが答えました。

setopt extendedglobzshで拡張グローバルモードを設定します。^除外記号なのでmv ^new new全部です。次に、zshで設定できるすべてのオプションを見て、setopt拡張グローバルモードを無効にします。unsetopt extendedglob

コメントで付けることができましたが、まだそうではありませんでした... :-)

関連情報