ディレクトリをコピーした後にソースから削除するにはどうすればいいですか?

ディレクトリをコピーした後にソースから削除するにはどうすればいいですか?

ディレクトリを移動したいだけです。各ツールには、コピー後にソースからディレクトリを削除するオプションがないようだったので、mv、cp、rsync を順に調べました。たとえば、src と dst が異なるデバイス上にある場合、mv にはディレクトリではなくファイルが必要です。

「デバイス間の移動に失敗しました: src から dst へ; ターゲットを削除できません: ディレクトリです」

おそらく、これを行う最も簡単な方法は、追加の削除コマンドを使用することですが、データ損失のリスクが高まるため、私はそれを使用しないことをお勧めします。

答え1

Bob が言ったとおりです。残念ながら (まだ) コメントできないので、ここで調整を加えなければなりません。Bobs のコマンドを少し変更したバージョンを使用することをお勧めします。

cp -rp source-dir target-dir && rm -r source-dir;

二重アンパサンドは、最初のコマンドが終了した場合にのみ2番目のコマンドが実行されることを保証します。成功-- 何らかの理由でコピーが失敗し (たとえば、ターゲット ボリュームに十分なスペースがない)、ソースが削除されてしまうと、大変なことになります...

答え2

実は、動画ディレクトリを「移動」することはできますが、デバイス間またはファイル システム間で移動することはできません。ファイル ポインタを再定義するだけで、コンテンツ自体はコピーされないため、非常に高速に実行されます。

したがって、2 つのコマンド (コピーしてから削除) が必要になります。私の Solaris システムでは、次の 2 つのコマンドを使用してディレクトリを移動します。

cp -rp source-dir target-dir; rm -r source-dir;

ご使用の環境に適した正しい構文を使用していること、および存在する可能性のあるシンボリック リンクの処理方法については、man ページを参照してください。

関連情報