Those of you using testdisk/photorec free software for recovering lost files shall know what means searching specific file types as images in results.
I just did a short python script that sorts all the files extracted by testdisk/photorec in folders sorted by filetype (images, pdf, video, etc).
You can check it too in my website at http://system-tricks.com/index.php/data ... y-results/
Hope you find it useful.
Code: Select all
#!/usr/bin/env python
#
# System-Tricks - http://system-tricks.com
# Copyleft 2012 - Luis A. Fernandez (datacorder@gmail.com)
#
# This program is free software. You can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
import os, magic
from shutil import copyfile
#================ CONFIG SECTION ================#
# Source folder with photorec/testdisk results:
testdisk_results = 'SOURCE FOLDER WHERE TESTDISK RESULTS ARE'
#
# Destination folder where you want to store the sorted results:
base_destdir = 'DESTINATION FOLDER WHERE YOU WANT TO STORE SORTED RESULTS'
#
# File types to filter out. You can add every MIME-types you are not interested on:
filter = ['application_octet-stream', 'text_plain']
#============= END OF CONFIG SECTION ============#
types = {}
mime = magic.open(magic.MAGIC_MIME)
mime.load()
for dir in os.listdir(testdisk_results):
for filename in os.listdir(os.path.join(testdisk_results, dir)):
file = os.path.join(testdisk_results, dir, filename)
filetype = mime.file(file).split(';')[0].replace('/', '_').replace(" ", "_").split(',')[0]
if filetype in filter:
continue
if not filetype in types:
types[filetype] = 1
else:
types[filetype] += 1
print filename + ": " + filetype
destdir = os.path.join(base_destdir, filetype)
destfile = os.path.join(destdir, filename)
if os.path.exists(destdir):
try:
copyfile(file, destfile)
except Exception, e:
print "Error copying " + filename + ": " + str(e)
continue
else:
os.makedirs(destdir)
try:
copyfile(file, destfile)
except Exception, e:
print "Error copying " + filename + ": " + str(e)
continue
print "\n** Results:\n--------------------"
for type in types:
print type + ": " + str(types[type]) + " files"
print print "\n---------------------------\n\n* Finished. Results stored in " + base_destdir + "\n\n"