掃描磁盤我有很多的CHK-文件,如「FOUND.000」,文件夾後...如何恢復窗口CHK-文件擴展名在linux的bash
我可以找出與擴展文件命令:
for i in /media/Daten/found.*/*.chk ; do file $i; done
我怎麼可以用它來重建所有文件擴展名這些文件?
掃描磁盤我有很多的CHK-文件,如「FOUND.000」,文件夾後...如何恢復窗口CHK-文件擴展名在linux的bash
我可以找出與擴展文件命令:
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
命令,然後裏grep /etc/mime.types吧,挑選在列表中的第一個擴展,然後將該文件重命名了這一點。
此命令將執行批量重命名,它會先移動並稍後提問,因此請100%確定您正在正確的目錄中運行此命令。
下一次,不要使用chkdsk來恢復文件。你可以將其損壞無法修復。 chkdsk將OM NOM 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使用正則表達式來捕獲基本名稱(如FILE0001
)和文件類型(如jpeg
),並打印一行如FILE0001.CHK /tmp/renamed/FILE0001.jpeg
。最後,該行傳遞給cp
。
(該\
繼續到下一行的單個行命令。)
THX,即工作。但如果沒有找到擴展名,你可以以某種方式不重命名文件?並排除目錄呢? – rubo77
我已經給你所有的工具來解決這個工作。你所問的關於實施微不足道。研究'bash'if語句。與我的解決方案一起放置在拼盤上,並研究如何調整它,我們可以一起工作,爲您構建您想要的確切解決方案。 – OmnipotentEntity
好吧,也許我會找出如何將exe擴展名改爲「.exe」而不是「.bin」。但一開始這已經適用於我。 thx;) – rubo77