これまで数え切れないほど機能していた通常のmv
コマンドを使用してファイルの名前を変更しようとしています。
$ ls -l |grep "Picture 001"
-rwxrwxrwx 1 rolf rolf 657711 Feb 19 21:42 Picture 001_19.jpg
$ mv "Picture 001_19.jpg" "Picture 001_19_u.jpg"
mv: cannot move 'Picture 001_19.jpg' to a subdirectory of itself, 'Picture 001_19_u.jpg'
mv
が突然このファイルの名前変更を拒否する理由を誰かに教えてもらえますか?mv
は、Picture 001_19_d.jpg
がファイル名ではなく、ディレクトリ名であるとどのように判断しましたか?
引数-T
を指定して同じコマンドを実行してみました。 mv
のマンページから:
-T, --no-target-directory
treat DEST as a normal file
結果はまったく同じです。
これは混乱し、イライラします!
バグですか?
$ mv --version
mv (GNU coreutils) 8.30
バグのようです
$ echo "blah" > tt
$ mv tt tt1
mv: cannot move 'tt' to a subdirectory of itself, '../tt'
$ mv tt ../
mv: cannot move 'tt' to a subdirectory of itself, '../tt'
この問題は、マウントされた外部ドライブの書き込み可能なNTFSパーティションでmv
を実行すると発生します。
Ext4パーティションでホストされているデスクトップフォルダーにコピーし、そこでmv
を試してみると、問題なく動作します。
$ Sudo apt-show-versions coreutils
[Sudo] password for rolf:
coreutils:AMD64/sid 8.30-2 uptodate
coreutils:i386 not installed
確かに私はバグのあるバージョンを実行しているようです( この回答 による)。
Debian sid(unstable)を実行している場合、coreutils
バージョン8.30-2の/bin/mv
にバグがあります。
このバグはDebianにのみ影響します。[ ソース ]
2019年2月27日、Debian開発者は バグ#92342 を報告しました:
coreutils:ファイルシステムがRENAME_NOREPLACEをサポートしていない場合にmvが壊れます
このような破損は Debianの最先端のローリングリリース で予想されます:
"sid"は、大幅な変更とインプレースライブラリの更新の対象となります。これにより、非常に「不安定」システムになり、ライブラリがないためにインストールできないパッケージ、満たすことができない依存関係などが含まれる可能性があります。自己責任で使用してください。
このバグを回避するには、次のいずれかを実行できます。
coreutils=8.30-1
はDebianバスター( "testing") にあります。これは、ZFSバックエンドを使用したLXDのバグを示すデモです。
deltik@node53 [~]$ lxc launch -s local images:debian/sid demo
Creating demo
Starting demo
root@demo:~# cat /etc/*-release
PRETTY_NAME="Debian GNU/Linux buster/sid"
NAME="Debian GNU/Linux"
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"
root@demo:~# apt-cache policy coreutils
coreutils:
Installed: 8.30-2
Candidate: 8.30-2
Version table:
*** 8.30-2 500
500 http://deb.debian.org/debian sid/main AMD64 Packages
100 /var/lib/dpkg/status
root@demo:~# df -hT
Filesystem Type Size Used Avail Use% Mounted on
rpool/lxd/containers/demo zfs 379G 195M 378G 1% /
none tmpfs 492K 0 492K 0% /dev
udev devtmpfs 7.8G 0 7.8G 0% /dev/tty
tmpfs tmpfs 100K 0 100K 0% /dev/lxd
tmpfs tmpfs 100K 0 100K 0% /dev/.lxd-mounts
tmpfs tmpfs 7.8G 0 7.8G 0% /dev/shm
tmpfs tmpfs 7.8G 8.1M 7.8G 1% /run
tmpfs tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs tmpfs 7.8G 0 7.8G 0% /sys/fs/cgroup
root@demo:~# echo "blah" > tt
root@demo:~# mv tt tt1
mv: cannot move 'tt' to a subdirectory of itself, 'tt1'