O script a seguir leva um argumento como "file*.x"
e o aplica a find | sort
para obter uma lista de arquivos a serem processados. Com milhares de arquivos, você pode obter "muitos argumentos" em echo file*.x
.
#!/bin/bash
prev=
find . -maxdepth 1 -type f -name "$1" | sort -V |
while read -r file; do
file=${file#*/} # Remove leading ./
if test -n "$prev"; then
diff -u "$prev" "$file" > "${prev%.*}-${file%.*}.diff"
fi
prev="$file"
done
Sessão de amostra:
$ echo a > file1.x
$ echo b > file2.x
$ echo c > file3.x
$ echo d > file5.x
$ echo e > file10.x
$ ./script.sh "file*.x"
$ ls *.diff
file1-file2.diff file2-file3.diff file3-file5.diff file5-file10.diff