MV除外フォルダが機能しない

MV除外フォルダが機能しない

フォルダ内のすべてのファイル/ディレクトリをコピーしようとしていますが、他のすべてのファイルがそのフォルダ内にあるようにしたいので、1つのフォルダを除外したいと思います。以下のより良いデモのためのフォルダ構造があります。

- VideosFolder
      L File1
      L File2
      L File3
      L TutorialFolder

今はこんなにFile1 File2 File3感動したいTutorialFolder

- VideosFolder
      L TutorialFolder
          L File1
          L File2
          L File3

このコマンドを試しました

mv ~/Desktop/VideosFolder/!(TutorialFolder) TutorialFolder

しかし、このエラーが発生しました。

mv: "/home/user/Desktop/VideosFolder/!(TutorialFolder)" を計算できません。そのファイルやディレクトリはありません。

有効になっていることを確認しましたが、shopt extglob実際に有効になっています。だから私は何をすべきかわかりません。

答え1

君はただ走れるよ

mv * TutorialFolder/

そしてVideosFolder/。これにより、すべてのファイルとディレクトリ(で始まらない.)がに移動しますTutorialFolder/。ディレクトリを独自に移動できないため、次のような警告メッセージが表示されることがあります。

mv: cannot move 'TutorialFolder' to a subdirectory of itself, 'TutorialFolder/TutorialFolder'

これは予想される現象であり、mvまだ移動していないことを意味しますTutorialFolder

答え2

Rsyncコマンドを試してみてください。 Rsyncは、リモートシェルを介して2つの場所間でファイルとフォルダを同期する高速で多様なコマンドラインユーティリティです。

 rsync -a --exclude 'TutorialFolder' ~/Desktop/VideosFolder/  ~/Desktop/VideosFolder/TutorialFolder/

答え3

他の答えはうまくいくが内部にあると仮定すると、エラーを発生させないよりクリーンなアプローチは次のとおりですVideosFolder

find . -maxdepth 1 ! \( -name TutorialFolder -o -name '.' \) -exec mv {} TutorialFolder/ \;

TutorialFolderこれにより、現在のディレクトリで、and .(現在のディレクトリ自体)と名前の異なるすべてのファイルとディレクトリを見つけて、一緒に-exec使用します。mvTutorialFolder

関連情報