ディレクトリを置き換えるのではなく、mvがディレクトリに移動することを決定する方法は?

ディレクトリを置き換えるのではなく、mvがディレクトリに移動することを決定する方法は?

ディレクトリがあるとしましょう/hello

だから私はそうしましたmv /hello /hello2

/hello引っ越したいですか/hello2/hello?それとも私が/hello引っ越しているのでしょうか/hello2

これは一貫性のない結果をもたらすようです。

ベストアンサー1

mv a baifbbディレクトリであるか、ディレクトリへのシンボリックリンクに入ります。それ以外の場合は名前aがに変更されます(または他のファイルシステムにある場合はコピーおよび削除されます)b

ファイルをディレクトリに移動する一貫した結果を得るには、次のようにします。

mv file dir/.

存在しないとdirエラーが発生し、名前は変更されませfiledir

mv file dir/また、動作しますが、fileそれ自体が型の場合は機能しません。目次そしてdirそれ自体は存在しません。

一方、renameターゲットファイルがディレクトリとして存在するかどうかを心配することなく作業を実行するには、GNU mvを使用して次のことを実行できます。

mv -T file dest

この場合、ディレクトリの場合はfile移動されません。ただし、 がすべてディレクトリで空の場合は名前が変更され、ソースは削除されます。どちらもディレクトリで、空でない場合は文句を言います。destdestfiledestdestfiledestdestdestmv -T

fileもしあればdest同じいいえディレクトリ(ディレクトリへのシンボリックリンクを含む)のfile名前が変更されdest(書き込み権限がない場合はメッセージが表示されますがdest)、元のディレクトリはdest削除されます。ディレクトリシンボルリンクの場合、mv file dest状況は異なります。destを使用すると、-T名前fileをに変更しますdestが、使用しない場合は、-T指すfileディレクトリに移動しますdest

その後、名前mv -T file destfile変更されるdestか、エラーメッセージ(またはプロンプト)が表示されます。コマンドが成功すると、元のコマンドdest(以前に存在していた場合)が削除されます。

おすすめ記事