コンテンツを含むサブフォルダーをコピーせずに別のソース フォルダーに移動するにはどうすればよいですか?

コンテンツを含むサブフォルダーをコピーせずに別のソース フォルダーに移動するにはどうすればよいですか?

何度も聞かれていることは承知していますが、具体的に何をしようとしているのかの答えが見つかりません。

ディレクトリ構造は次のとおりです。

Main Folder1
|
|-Subfolder 1
|-Subfolder 2 HasAReallyLongName
|---files
|-Subfolder 3-1000

Main Folder2
|
|-Subfolder 2 HasAReallyLongName
|---files
  • Subfolder2 とそのファイルを別のディレクトリに移動してみたいと思います。
  • 十分なスペースがないので、何かをコピーして削除したくありません。
  • mv /Main/Sub2/* /Main2/そうすると、すべてが/Main2サブディレクトリではなくフォルダ内に置かれるので、そうしたくありません。
  • mkdir /Main2/...名前が非常に長い(主にタイムスタンプ)ので、手動で入力したくない(おそらく台無しになる)ので、やりたくないです。
  • 私の知る限り、rsyncファイルもコピーするので、それが機能するかどうかはわかりません。

ご提案や他のツールがあれば、ぜひ教えてください!

答え1

これはまったく簡単です。

mv /Main1/Sub2 /Main2

これにより、元のすべての内容を含むディレクトリが作成され/Main2/Sub2、ディレクトリが削除されます/Main1/Sub2。完全な名前を入力したくない場合は、glob を使用できます。名前の入力を止めて、*ディレクトリ名をディレクトリ内の他のすべてのものと区別するのに十分な文字を入力したら、 で終了します (注意してください)。

mv /Main/Sub* /Main2

期待どおりに動作しない原因として考えられる問題:

  • /Main2内にと同じ名前のディレクトリが既に存在します。これにより、 と同様に、既存のディレクトリの上書きが拒否されるため、/Main1/Sub2エラー が発生します。この場合、まず の既存のディレクトリの名前を変更 (または削除) します。directory not emptymv/Main2

    mv /Main2/Sub2 /Main2/SomethingElse
    
  • 間違ったパスを使用しています。すべて大文字と小文字が区別されることを覚えておいてください。また、相対パスと~拡張にも注意してください。これらはすべて、現在の作業ディレクトリによって異なります。

    /Main1/Sub2
    Main1/Sub2
    ~/Main1/Sub2
    
  • ソースディレクトリおよび/または宛先ディレクトリへの書き込み権限がありません。これはエラーメッセージから明らかです: mv: cannot move 'thing' to '/place': Permission denied。その場合、私のお気に入りのコマンドを実行して問題を解決できます。

    sudo !!
    

答え2

わかりました: を使用するとsudo mv /Main1/Sub2 /Main2うまくいきました。主な違いは、ルートになることだと思います。

関連情報