mvコマンドの挙動(コピーが完了したものから削除する方法)

ディレクトリ・ファイルを移動するmvコマンドは、『cp -a』を実行した後に『rm』でファイルを削除します。
cpのaオプションはアクセス権や所有権・タイムスタンプをできるだけ保持してコピーを行うオプションです。

このため複数のディレクトリを移動するときには、指定方法により挙動が異なります。

例えば次のような場合です。

/test1/dir1
/test1/dir2
/test1/dir3

これを

mv /test1 /test2

とした場合、test1の下層のファイルをすべてコピーし終わってから、ファイルが削除されます。

具体的には、
/test1/dir1をコピー
/test1/dir2をコピー
/test1/dir3をコピー
/test1/dir1を削除
/test1/dir2を削除
/test1/dir3を削除
となります。

移動が完了したものから削除されるわけではありません。
途中で中断してしまった場合には、最初からやり直す必要があります。

移動が完了したものから削除するには、*を使用します。

mkdir /test2
mv /test1/* /test2/

とします。
このようにするとtest1の下層のファイルでコピーが完了したものから削除されます。

具体的には、
/test1/dir1をコピー
/test1/dir1を削除
/test1/dir2をコピー
/test1/dir2を削除
/test1/dir3をコピー
/test1/dir3を削除
となります。

mv /test1/* /test2/

は、実際には

mv /test1/dir1 /test2/
mv /test1/dir2 /test2/
mv /test1/dir3 /test2/

と同じ意味になるからです。

関連記事

スポンサーリンク

telnetの反応がなくなった時に接続を強制的に切断する方法

ホームページ製作・web系アプリ系の製作案件募集中です。

上に戻る