1

Я пытаюсь переименовать файл с помощью обычной команды 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 . С man-страницы 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'

Проблема возникает, когда я запускаю mv на подключенном внешнем диске, на доступном для записи разделе NTFS.

Когда я копирую его в папку «Рабочий стол», которая находится в разделе Ext4, и я пытаюсь использовать mv , он работает без проблем.

Обновление 2

$ sudo apt-show-versions coreutils
[sudo] password for rolf: 
coreutils:amd64/sid 8.30-2 uptodate
coreutils:i386 not installed

Действительно, я, кажется, работаю с ошибкой версии (согласно этому ответу).

1 ответ1

1

Если вы используете Debian sid (unstable), есть ошибка с /bin/mv из coreutils версии 8.30-2.

Эта ошибка касается только Debian. [ источник ]

27 февраля 2019 года разработчик Debian сообщил об ошибке # 923420:

coreutils: mv не работает, когда файловая система не поддерживает RENAME_NOREPLACE

Подобные поломки следует ожидать в новейшем выпуске Debian:

"sid" подвержен значительным изменениям и обновлениям библиотеки на месте. Это может привести к очень "нестабильной" системе, которая содержит пакеты, которые не могут быть установлены из-за отсутствующих библиотек, зависимостей, которые не могут быть выполнены и т.д. Используйте его на свой страх и риск!

Чтобы обойти эту ошибку, вы можете:


Вот демонстрация, демонстрирующая ошибку на LXD с бэкэндом ZFS:

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'

Дополнительные ресурсы

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .