#!/bin/bash echo "Extracting files from $1 ..." count=0 hachoir-subfile $1 2>&1 |\ grep 'File at' | grep 'size' |\ while read entry; do offset=$(echo $entry | sed -re 's/.*at ([[:digit:]]+) .*/\1/') size=$(echo $entry | sed -re 's/.*size=([[:digit:]]+) .*/\1/') ext=$(echo $entry | cut -d: -f2 | cut -d' ' -f2 | tr '[[:upper:]]' '[[:lower:]]') name="$(echo ${1}_f${count}.${ext})" echo "> $name" dd if="$1" of="$name" bs=1 skip=${offset} count=${size} count=$(( $count + 1 )) done echo 'Done!'