我试图批量将图像从文件夹移动到由图像的图像(px)大小命名的新文件夹。我用这个命令来做到这一点:
awk '{system("mv "$1 " ./"$4)}' sizes.log
sizes.log的内容是这种格式的许多行:
f122441728.jpg Exif.Photo.PixelXDimension Long 1 4032
我现在痛苦地意识到这种方法的缺点。我没有测试我的命令,并将许多文件移动到文件“1”中,因为在所有的sizes.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的错误消息。
如果文件仍然存在且未被无意删除,请尝试使用find
命令以递归方式搜索根目录。这假定您具有某些丢失文件的名称。例如,如果您知道其中一个文件名为abc.jpg
,则可以按如下方式搜索:
find / -name "abc.jpg"
有关详细信息,请参阅this命令中的find
规范答案。