我通过批量mv丢失了很多文件,这些文件都到达了同一目的地。我的文件还在磁盘上吗?

时间:2019-04-09 21:54:01

标签: bash awk mv synology raid

我试图将图像从一个文件夹批量移动到以图像的图像(px)大小命名的新文件夹。我使用此命令来做到这一点:

awk '{system("mv "$1 " ./"$4)}' sizes.log

sizes.log的内容以这种格式显示了很多行:

f122441728.jpg        Exif.Photo.PixelXDimension                   Long        1  4032

我现在很痛苦地意识到这种方法的缺点。我没有测试命令,而是将许多文件移动到文件“ 1”中,因为在size.log的所有行中,列$ 4为“ 1”。 我意识到发生了什么事并中止了该命令,但是删除了约500张照片。

我不确定mv的工作方式,但是据我所知,这是发生了的: 在每一行中,$ 1列中的文件都重命名为“ 1”,但是映像文件的数据块仍保留在磁盘上。

该假设正确吗? 例如,我有机会通过photorec康复吗?

我将不得不在另一台机器上重新组装RAID,但这是我以前很幸运的事情。我正在从另一个错误中整理出一堆photorec。

修改: 找到文件备份后(是的!),我重新访问了导致我出错的过程,并使用这些命令将文件分类到以图片的图像大小命名的文件夹中。

identify -format "%f %w\n" *.jpg >> siz.log

awk '{system("mkdir ./"$2"/")}' siz.log

awk '{system("mv "$1 " ./"$2"/")}' siz.log

注意结尾的斜线,这才使我陷入麻烦。我错过了它,并且没有收到来自MV的错误消息。

1 个答案:

答案 0 :(得分:0)

如果文件仍然存在并且没有被误删除,请尝试使用find命令以递归方式搜索根目录。这假定您具有某些丢失文件的名称。例如,如果您知道其中一个文件名为abc.jpg,则可以按以下方式搜索:

find / -name "abc.jpg"

有关详细信息,请参见find命令上的this规范答案。