Вы когда-нибудь получали это сообщение при перемещении файла?mv: не будет перезаписывать только что созданный - PullRequest
10 голосов
/ 12 января 2011

У меня есть скрипт оболочки Bourne, который выполняет несколько задач. Одна из этих задач - переместить некоторые файлы в определенный каталог. Сегодня, когда я запустил скрипт, я получил следующее сообщение:

mv: will not overwrite just-created <filename> with <sameFilename>

где filename - это исходное имя файла с полным путем, а sameFilename - это точно такой же файл и путь. Я регулярно использую этот скрипт каждый день и никогда не получал это сообщение раньше.

Сразу после запуска скрипта я перезапустил его, чтобы увидеть, сохранилась ли ошибка, и я не смог воспроизвести его снова. Я запускаю этот скрипт в Red Hat 5 Enterprise.

Ответы [ 2 ]

10 голосов
/ 12 января 2011

Вот как это воспроизвести:

> mkdir a b c
> touch a/file
> touch b/file
> mv a/file b/file c/
mv: will not overwrite just-created `c/file' with `b/file'

Могут быть и другие способы воспроизвести это, но разумно предположить, что выше произошло.

То есть ваш скрипт переместил несколько файлов с одинаковыми именами в одну цель в одну команду mv.После выполнения вышесказанного вы заметите, что a/file был успешно перемещен (и b/file оставлен как есть), поэтому в следующий раз, когда вы выполните его, проблема, скорее всего, исчезнет.

4 голосов
/ 23 января 2014

Это происходит потому, что два разных файла с одним и тем же именем будут перемещены в одно и то же место только одной командой. Параметр -f не поможет в этом случае, он применяется только тогда, когда уже есть целевой файл, который будет перезаписан при запуске команды mv. Происходит следующее: один из файлов (первый встреченный), созданный mv, перемещается, и он отказывается перемещать второй (который может перезаписать другой файл из-за риска хранения пользовательских данных). Это также объясняет, что если у вас есть только два файла с одинаковыми именами, предупреждение исчезнет при втором запуске команды.

Однако, если в вашем дереве каталогов много файлов с одинаковыми именами, предупреждение может остаться там для многих запусков.

Если вы знаете, что делаете, способ избежать этого предупреждения - добавить опцию --backup=numbered к mv. Целевые файлы не будут перезаписаны, но файлы резервных копий будут созданы при любом столкновении. Если идея состоит в том, чтобы удалить их, это можно легко сделать позже, используя rm *~.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...