Se o script tiver que ser iniciado no diretório em que ele deve funcionar, você precisará cd
ai primeiro. Algo parecido com isto:
find -type d -exec sh -c 'cd -- "$1"; exec /path/to/script.sh' sh {} \;
(mude o caminho para o script, obviamente).
Como alternativa, você pode modificar o script para obter um nome de diretório como argumento, isso deve ser tão simples quanto adicionar um cd
ao início do script.
#!/bin/bash
if [ "$1" ]; then
cd -- "$1" || exit 1
fi
for file in *.*
...
Teste se $1
está vazio no início, para que o comportamento padrão ainda funcione no diretório atual (e não chame acidentalmente cd
sem argumentos: ele seria do usuário $HOME
).
E, em seguida, basta executar um find -exec
direto com o nome do diretório como argumento para o script:
find -type d -exec /path/to/script.sh {} \;