扫描磁盘后,我在“found.000”之类的文件夹中有很多 CHK 文件,...
我可以使用 file 命令找出扩展名:
for i in /media/Daten/found.*/*.chk ; do file $i; done
如何使用它来重建这些文件的所有文件扩展名?
扫描磁盘后,我在“found.000”之类的文件夹中有很多 CHK 文件,...
我可以使用 file 命令找出扩展名:
for i in /media/Daten/found.*/*.chk ; do file $i; done
如何使用它来重建这些文件的所有文件扩展名?
此技术不适用于所有文件。我曾经用它来帮助数据恢复。
for i in /media/Daten/found.*/*.chk; do mv "$i" "$i".$(grep $(file -bi $i | awk '{print $1}' | sed 's/;//') /etc/mime.types | head -1 | awk '{print $2}'); done
它的工作方式是在命令中使用 mime 类型功能,file
然后为它 greps /etc/mime.types,选择列表中的第一个扩展名,然后将文件重命名为该扩展名。
这个命令会进行批量重命名,它会先移动然后再提问,所以要 100% 确定你在正确的目录上运行它。
下次不要使用 chkdsk 来恢复文件。您可能会损坏它们,无法修复。chkdsk 将 OM NOM NOM 您的数据,然后打嗝。在 chkdsk 之前,请始终使用恢复软件取回所需的文件。
通常,这些文件被命名为 .CHK,而不是 .chk(仅供参考。)
要恢复特定文件类型,请先查看其中的内容。在 OS X 上测试:
file --mime -b /media/Daten/FOUND.*/*.CHK | sort | uniq
application/octet-stream; charset=binary
application/ogg; charset=binary
application/pdf; charset=binary
application/zip; charset=binary
audio/x-wav; charset=binary
image/jpeg; charset=binary
image/png; charset=binary
video/3gpp; charset=binary
然后,对于您要保留的类型:
mkdir /tmp/renamed
for f in /media/Daten/FOUND.*/*.CHK
do file --mime $f \
| perl -n -e \
'/^([^.]*).*(3gpp|jpeg|ogg|png|wav)/ && print "$1.CHK /tmp/renamed/$1.$2\n"' \
| xargs cp
done
这使用file --mime
(或file -I
,或file -i
在 Linux 上)来确定 MIME 类型,然后将带有文件名和 MIME 类型的行传递给 Perl,Perl 使用正则表达式来捕获基本名称(like FILE0001
)和文件类型(like jpeg
)并打印一行,如FILE0001.CHK /tmp/renamed/FILE0001.jpeg
. 最后,该行被传递给cp
.
(\
在下一行继续单行命令。)