(解決済み)Windows Ubuntu Subsystem: mv でフォルダーが消えたが、ファイルでは正常に動作する

問題

Ubuntu 18.04 の Windows Subsystem for Linux を使っていました。次のコマンドを実行しました。

mv venv ../d/

その後、venv ディレクトリが現在のディレクトリにも d にも見つからなくなりました。.bash_history でコマンドを再確認しました。ここで、venv はフォルダーで、d は Windows の D: ドライブ上にある /mnt/d/ubuntu1804/ へのリンクです。

しかし、次のコマンドを実行すると、

mv a.txt ../d/

問題なく動作し、ファイルは d の中に見つかりました。

現在の作業ディレクトリは c で、これは /mnt/c/ubuntu1804/ へのリンクです。

解決方法

ディレクトリは失われていませんでした。実際には、C: ドライブのルート直下にある d という名前のディレクトリへ移動されていました。

WSL では、シンボリックリンクと .. を含むパスを通してファイルを移動すると、このような混乱が起こることがあります。パスが期待した場所に解決されない場合があります。破壊的な移動を実行する前に、次のコマンドで実際の物理パスを確認してください。

pwd
pwd -P
ls -ld ../d
readlink -f ../d

より安全な方法は、実際のマウントパスを直接使うことです。

mv venv /mnt/d/ubuntu1804/

この問題が起きた場合は、Windows または WSL から、想定外の移動先に移動されたディレクトリを探します。たとえば次のようにします。

ls /mnt/c/d

その後、本来意図していた D: ドライブのパスへ戻します。

mv /mnt/c/d/venv /mnt/d/ubuntu1804/

Leave a Reply