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

У меня есть файл с именем +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

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

4 ответа

Решение

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

Пытаться 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
Другие вопросы по тегам