我在 Linux 服务器上有一个名为 +13x18_DSC_0800.JPG 的文件(请不要问我它是怎么到那里的,因为我不知道它是怎么到那里的)。我希望将其重命名为 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
任何帮助都是极好的...
答案1
这通常意味着文件名中有一些不可打印的字符,由于它们不可打印,因此您无法看到它们。
ls -la > /tmp/foo
然后尝试vi -b /tmp/foo
查看全部文本。
如果是这种情况,最简单的方法是通过 glob 来处理它,尝试echo *13x18_DSC_0800*
验证 glob 是否与该文件匹配(并且仅与该文件匹配),然后您就可以mv *13x18_DSC_0800* newname.jpeg
重命名它。
答案2
使用
cp "+13x18_DSC_0800.JPG" 13x18_DSC_0800.JPG
答案3
如果你只想删除一个文件,那么愚蠢而简单的解决方案是使用午夜指挥官:D
但开头的 + 号根本不应该有问题......
$ touch +13x18_DSC_0800.JPG
$ mv +13x18_DSC_0800.JPG test.jpg
$ rm test.jpg
对我有用......
答案4
可接受的答案使用通配符,因此只需要检查一个文件匹配。如果我们添加路径,则引用是唯一的。
touch +plus.file
touch -minus.file
mv ./+plus.file plus.file
mv ./-minus.file minus.file