Назад | Перейти на главную страницу

Как скопировать файл с именем «+» и переименовать?

У меня есть файл с именем + 13x18_DSC_0800.JPG на сервере Linux (пожалуйста, не спрашивайте меня, как он туда попал, я понятия не имею, как он туда попал). Я хочу переименовать его в 13x18_DSC_0800.JPG. Однако я не смог. Когда я пытаюсь скопировать это, я получаю;

# cp \+13x18_DSC_0800.JPG asd.JPG
  cp: cannot stat `+13x18_DSC_0800.JPG': No such file or directory

Вот еще некоторая информация;

#ll
 -rwxrwxrwx  1 ftpuser renko 2798985 2011-10-14 01:12  +13x18_DSC_0800.JPG*

Я действительно не знаю, что не так, кроме того, что знак плюса убивает какой-то скрипт. Еще немного информации;

#uname -a
Linux server-1 2.6.38-8-server #42-Ubuntu SMP Mon Apr 11 03:49:04 UTC 2011 x86_64 x86_64 x86_64 GNU/Linux

Любая помощь была бы потрясающей ...

Часто это означает, что в имени файла есть непечатаемые символы, которые вы не видите, потому что они не печатаются.

Пытаться ls -la > /tmp/foo затем vi -b /tmp/foo посмотреть весь текст.

Если это так, самый простой способ справиться с этим через glob, попробуйте echo *13x18_DSC_0800* чтобы убедиться, что глобус соответствует этому файлу (и только этому файлу), вы можете сделать mv *13x18_DSC_0800* newname.jpeg переименовать его.

Использовать

cp "+13x18_DSC_0800.JPG" 13x18_DSC_0800.JPG

Для меня

    cp +13x18_DSC_0800.JPG 13x18_DSC_0800.JPG

работал как шарм, без каких-либо побегов.

глупое и простое решение, если вы хотите избавиться только от одного файла - используйте midnight commander: D

но знак + в начале не должен быть проблемой ...

    $ touch +13x18_DSC_0800.JPG
    $ mv +13x18_DSC_0800.JPG test.jpg
    $ rm test.jpg

работает для меня ...

В принятом ответе используется подстановка, поэтому требуется проверка совпадения только одного файла. Если мы добавим путь, ссылка будет уникальной.

touch +plus.file
touch -minus.file
mv ./+plus.file plus.file
mv ./-minus.file minus.file