我是否只是使用find -exec mv删除了所有内容?


26

我试图自己解决这个问题。这是我在终端中使用的命令:

find . -name "*.jpg" -exec mv {} pictures \;

我没有首先创建一个名为Pictures的目录。发生的事情是创建了一个名为pictures.gif的文件。它是否找到文件然后在移动文件时将其覆盖?

通过此命令创建的pictures.gif文件是什么?

文件仍然可能在驱动器上的某个位置吗?


抱歉,您遇到了麻烦,希望您能找回东西。.gif令人迷惑-知道那里发生了什么会很有趣。
SEngstrom

7
如果要编写目录的名称,请追加/到该目录!总是!然后它只能是目录。
与莫妮卡(Monica)进行的轻度比赛

2
就像最上面的答案说的那样:立即停止使用该驱动器,并尝试恢复已删除的.jpg文件。但是,为此,我宁愿推荐开放源代码和跨平台的PhotoRec,它知道许多图像格式(Jpg,但也有不同的原始文件等)并且非常详尽。
Olivier Dulac

Answers:


45

第一:立即停止使用该驱动器。可以以只读方式重新安装它,只需确保不再进行任何写操作即可。是的,您已经删除了图片。它们可能是可恢复的,但是您继续使用该驱动器的次数越多,恢复任何内容的机会就越少。

您的命令运行了mv pic1.jpg picturesmv pic2.jpg pictures等等。每次调用都会mv覆盖当前pictures由另一张图片命名的文件。

移动文件(在同一文件系统中)意味着将其从包含该文件的目录中分离出来,并以新名称附加到目标目录中。因此,此命令不会修改或删除任何文件数据,只有已消失图像的目录条目。

您可以运行一个工具,该工具可以搜索文件系统的可用空间并查找类似于jpeg的内容。幸运的是,每个jpeg文件都以可识别的标头开头。寻找删除内容的工具称为雕刻工具。在Ubuntu中有一些,包括restorejpeg最重要的是testdisk,...如果照片在单独的主分区或外部驱动器上,请安装一个或多个这些软件包,并将它们指向带有已删除图片的分区。

如果照片在系统磁盘上,则需要立即停止使用系统。使用另一台计算机下载实时CD或USB并从中启动。任何包含testdisk实时CD都符合要求,但其中一些CD比其他CD更易于使用。System Rescue CD是很好的通用系统救援CD。Ubuntu用户可能对Ubuntu Rescue Remix更为熟悉。


供以后参考,养成使用习惯,mv -i除非您打算覆盖文件。您可能已经具有的别名mv,但是仅在您mv直接在命令行上键入时才会出现,而在mv脚本或find命令调用时不会出现。

$ : >pictures
$ mv -i foo.jpg pictures
mv: overwrite `pictures'?

另外,如果/在名称后加上a 作为目录名称,则如果该目录不存在或者该名称的文件不是目录,则会出现错误。

$ : >pictures
$ mv foo.jpg pictures/
mv: cannot move `foo.jpg' to `pictures/': Not a directory
$ rm pictures
$ mv foo.jpg pictures/
mv: cannot move `foo.jpg' to `pictures/': Not a directory

为了避免的陷阱find,您可以改用bash的递归目录遍历功能。您需要先使用命令将其打开shopt -s globstar(您可以将此行添加到中~/.bashrc。然后:

mv **/*.jpg pictures/

(请注意,在bash中,**/还遍历到目录的符号链接,并且无法将其关闭。如果您希望不通过目录的符号链接进行递归遍历,请使用zsh或find。)


1
您是否在第二组示例中省略了/之后pictures的内容?即,在两个命令中都不应该mv foo.jpg pictures/(带有/mv吗?
帕迪·兰道

@PaddyLandau确实,这确实是一个非常糟糕的复制粘贴或编辑失败。感谢您的报告。
吉尔(Gilles)'所以

13

恐怕您刚刚将所有图片丢失到了单个文件中。可以使用最重要的取证工具恢复某些文件,但是成功率下降的时间越长,使用介质(磁盘)的时间就越长。(确切地说,分区的安装时间越长。)

下次,当您指的是目录时,请在其中添加斜杠,并添加-i选项以在文件已存在的情况下要求确认:

find -name "*.jpg" -exec mv -i {} pictures/ {} \;

6
是的,我必须再次强调:立即进入实时CD环境!如果您想退回这些文件,则需要立即停止使用驱动器。并且,如果您需要下载和刻录图像,请从另一台计算机上进行操作。此磁盘上发生的活动越少,恢复照片的机会就越大。
奥利(Oli)

谢谢你 我首先看到了您的答案,然后立即拔掉了计算机上的插头,并用我的multiboot usb应急磁盘重启了。
jtnewhou
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.