Использование некоторых из ваших параметров:
#!/bin/bash
# collect directory names
MessyDir="$1"
SortedDir="$2"
# test if user supplied two arguments
if [ -z $2 ]; then
echo "Error: command missing output directory"
echo "Usage: $0 input_dir output_dir"
exit 1
fi
# read recursively through MessyDir for files
find $MessyDir -type f | while read fname; do
# form out_dir name from user supplied name and file extension
out_dir="$SortedDir/${fname##*.}"
# test if out_dir exists, if not, then create it
if [ ! -d "$out_dir" ]; then
mkdir -p "$out_dir"
fi
# move file to out_dir
mv -v "$fname" "$SortedDir/${fname##*.}"
done
Это немного более затянуто, чем необходимо, и требует Bash 4 или выше из-за расширения переменной $ {fname ## *.} Это позволяет избежать вызова basename и отлично работает с photorec. Кроме того, этот сценарий будет работать для всех типов файлов, экспортируемых с помощью photorec, а не только для jpg и gif.