Obrigado a todos, eu encontrei o caminho correto, aqui está.
#!/bin/bash
from_id=$1
to_id=$2
#echo $from_id
#echo $to_id
diffpath='patch/diff.log'
newpath='patch/new/'
oldpath='patch/old/'
rm -rf patch
mkdir -p $newpath
mkdir -p $oldpath
git diff $from_id $to_id --raw > $diffpath
cat $diffpath | while read line
do
#echo =====================================
#echo $line
OLD_IFS="$IFS"
IFS=" "
arr=($line)
IFS="$OLD_IFS"
#echo ${arr[4]}
filepath=${arr[4]##* }
#echo $filepath
newid=${arr[2]%%...}
#echo $newid
oldid=${arr[3]%%...}
#echo $oldid
if [ "$newid"x != "0000000"x ]; then
newfilepath=${newpath}${filepath}
echo $newfilepath
dirpath=${newfilepath%/*}
echo $dirpath
mkdir -p ${dirpath}
git cat-file -p $newid > ${newfilepath}
fi
if [ "$oldid"x != "0000000"x ]; then
oldfilepath=${oldpath}${filepath}
echo $oldfilepath
dirpath=${oldfilepath%/*}
echo $dirpath
mkdir -p ${dirpath}
git cat-file -p $oldid > ${oldfilepath}
fi
done
Você encontrará o novo diretório chamado patch no diretório de trabalho atual depois de fazer isso.