【问题标题】:Linux "mv" command, created a new file (when no folder is available) [closed]Linux“mv”命令,创建了一个新文件(当没有可用文件夹时)[关闭]
【发布时间】:2014-01-10 18:22:01
【问题描述】:

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

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

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

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

我猜我所有的图片都被转换成一个名为“myimages”的文件。

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

请帮帮我。

【问题讨论】:

  • 这是您在“Mac 终端”上运行“linux 命令”时得到的结果...
  • @janos 你是什么意思? Mac OS 在后台运行 Unix;基本命令将与现代 Linux 发行版基本相同。没有?
  • myimages 文件有多大?我的猜测是将每个文件重命名为myimages,而您所看到的只是该行中的最后一个。在这种情况下,不太可能有办法恢复我担心的变化。
  • @Pekka 这是个玩笑。既然您问:“UNIX 命令”会更接近,“BSD 命令”会更好。 Linux 甚至不是操作系统。什么是“linux命令”?内核方法调用? UNIX/BSD 上的“Linux mv 命令”?这太不合适了,几乎是侮辱。最正确的方法是不标记命令:“在我的 Mac 上运行 findmv 命令来移动一堆文件,结果非常错误......” ubuntu 标记在那里做什么?

标签: linux macos unix ubuntu


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    你的照片不见了。您的命令将它们一一重命名为myimages

    你可以:

    1. 尝试从备份中恢复
    2. 试试PhotoRec,一个图像恢复工具
    3. 试试Exif Untrasher,一个图像恢复工具
    4. 尝试使用其他图像恢复工具

    顺便说一句,您不能在 Mac 上运行“linux 命令”。在 Mac 上,您正在运行 Mac 命令(为 Mac OS X 编译)或 shell 脚本。此外,ubuntu 标签对您的问题没有任何意义。

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

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

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

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

    什么都不会被移动,你仍然会拥有你的字段。

    【讨论】:

      【解决方案3】:

      从备份中恢复它们。

      你执行的命令是

      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 执行中移动多个文件。

      【讨论】:

        【解决方案4】:

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

        你不能。由于目标目录 myimages 不存在,find 的每个输出都会导致类似:

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

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


        您可以通过以下方式修复命令:

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

        【讨论】:

          猜你喜欢
          • 2019-08-12
          • 1970-01-01
          • 2021-08-21
          • 1970-01-01
          • 1970-01-01
          • 2018-11-30
          • 1970-01-01
          • 2022-12-10
          • 1970-01-01
          相关资源
          最近更新 更多