如何复制文件名为“+”的文件并重命名?

如何复制文件名为“+”的文件并重命名?

我在 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

相关内容