Sim, você pode adicionar apenas um -not -name
se houver um segundo argumento ao seu script:
#!/bin/bash
targetDir="$1"
exclude="$2"
findString=" '$targetDir'"
if [[ ! -z "$exclude" ]]; then
findString="$findString -not -name '$exclude'"
fi
eval "find $findString"
Por exemplo:
$ ls
file1 file1.sh file2 file2.sh file3.sh file4.sh file5.sh
$ foo.sh .
.
./file1
./file2
./file1.sh
./file4.sh
./file3.sh
./file5.sh
./file2.sh
$ foo.sh . '*sh'
.
./file1
./file2
Se você quiser definir vários padrões para excluir:
#!/bin/bash
targetDir="$1"
findString=" '$targetDir'"
shift
exclude="'$1'"
shift
for i in "$@"; do
exclude="$exclude -a -not -name '$i'";
done
if [[ ! -z "$exclude" ]]; then
findString="$findString -not -name $exclude"
fi
eval "find $findString"