3

スキャンディスクの後、「found.000」などのフォルダーにたくさんのCHKファイルがあります...

file コマンドで拡張子を確認できます。

for i in /media/Daten/found.*/*.chk ; do file $i; done

これを使用して、これらのファイルのすべてのファイル拡張子を再構築するにはどうすればよいですか?

4

2 に答える 2

8

この手法は、すべてのファイルに対して機能するわけではありません。以前はこれを使用して、データの回復を支援していました。

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から /etc/mime.types を grep し、リストの最初の拡張子を選択して、ファイルの名前をそれに変更します。

このコマンドは大量の名前変更を行い、最初に移動して後で質問するため、正しいディレクトリでこれを実行していることを 100% 確認してください。

次回は、chkdsk を使用してファイルを回復しないでください。修理できないほど損傷する可能性があります。chkdsk はデータを OM NOM NOM し、後でげっぷをします。chkdsk を実行する前に、必ず回復ソフトウェアを使用して必要なファイルを取り戻してください。

通常、ファイルの名前は .CHK であり、.chk ではありません (参考までに)。

于 2012-06-05T03:35:56.807 に答える
3

特定のファイルの種類を回復するには、まずそこにあるものを確認してください。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 -Ifile -iLinux では ) を使用して MIME タイプを決定し、ファイル名と MIME タイプの両方を含む行を Perl に渡します。Perl は、正規表現を使用してベース名 ( などFILE0001) とファイル タイプ ( などjpeg)をキャプチャします。のような行を出力しFILE0001.CHK /tmp/renamed/FILE0001.jpegます。最後に、その行が に渡されcpます。

(\は、次の行に 1 行のコマンドを続けます。)

于 2012-07-21T22:19:11.200 に答える