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