Linux“mv”命令,创建了一个新文件(当没有可用的文件夹时)

时间:2013-12-22 09:58:55

标签: linux macos unix ubuntu

我正在使用Mac终端,在内部使用linux命令查找“.jpg”文件列表,并尝试使用以下命令移动到当前目录中的“myimages”文件夹。

find . -name "*.jpg" -type f -exec mv {} myimages \;

执行上述命令时,我没有名为“myimages”的文件夹。

现在我的所有.jpg文件都消失了,并且在当前目录中创建了一个新文件“myimages”。

我想我的所有图像都会转换为名为“myimages”的单个文件。

如何从“myimgages”文件中取回所有图像?

请帮帮我。

4 个答案:

答案 0 :(得分:2)

你的图片消失了。每个图像都移动到文件myimages,有效地覆盖现有文件。您可以尝试使用恢复软件将其取回。

将来,请使用命令find . -name "*.jpg" -type f -exec mv {} myimages/ \;(请注意尾部斜杠)。您还可以向-i提供mv标记,以便在覆盖现有文件之前提示。

答案 1 :(得分:2)

你的照片消失了。您的命令将所有命令一个接一个地重命名为myimages

你可以:

  1. 尝试从备份中恢复
  2. 尝试PhotoRec,一个图像恢复工具
  3. 尝试Exif Untrasher,一个图像恢复工具
  4. 尝试其他图像恢复工具
  5. 顺便说一下,你不能在Mac上运行“linux命令”。在Mac上,您运行的是Mac命令(为Mac OS X编译)或shell脚本。此外,ubuntu标记对您的问题没有任何意义。

    将来,如果它应该是一个目录,你可以通过在目的地末尾添加一个斜杠来避免这样的错误:

    find . -name "*.jpg" -type f -exec mv {} myimages/ \;
    

    这样您会收到一条错误消息:

      

    mv:将blah重命名为myimages /:没有这样的文件或目录

    什么都不会被移动,你仍然会有你的领域。

答案 2 :(得分:1)

  

如何从" myimgages"中取回所有图像文件?

你不能。由于目标目录myimages不存在,find的每个输出都会产生如下内容:

mv ./file1.jpg myimages
mv ./file2.jpg myimages
...

在每个命令中,目标都是myimages。由于它不作为目录存在,mv认为它是目标文件名。


您可以通过说:

来修复命令
find . -name "*.jpg" -type f -exec mv -t myimages {} \;

答案 3 :(得分:1)

从备份中恢复它们。

您执行的命令是

mv file1 myimages # rename file
mv file2 myimages # rename file, discarding the old file previously referred to by myimages

等等。

除了尾部斜杠mentioned by knittl之外,我建议下次使用

find . -name "*.jpg" -type f -exec mv -t myimages/ {} +

明确指出“加倍”myimages是目标目录,并允许在mv次执行时移动多个文件。