extract-trash-dirs.sh [plain text]
#!/bin/sh
error () {
echo >&2 "error: $@"
exit 1
}
find_embedded_trash () {
while read -r line
do
case "$line" in
*Start\ of\ trash\ directory\ of\ \'t[0-9][0-9][0-9][0-9]-*\':*)
test_name="${line#*\'}"
test_name="${test_name%\'*}"
return 0
esac
done
return 1
}
extract_embedded_trash () {
while read -r line
do
case "$line" in
*End\ of\ trash\ directory\ of\ \'$test_name\'*)
return
;;
*)
printf '%s\n' "$line"
;;
esac
done
error "unexpected end of input"
}
sed -e 's/\r*$//' | \
while find_embedded_trash
do
echo "Extracting trash directory of '$test_name'"
extract_embedded_trash |base64 -d |tar xzp
done