Encontrar arquivos em vários diretórios retirados da lista em um arquivo?

FreeBSD 9.2 RELEASE p2

Eu tenho um arquivofromdirs.txt. Nesse arquivo, há uma nova lista de diretórios separados por linha, assim:

/etc
/home
/home/goods/

Preciso primeiro encontrar em todos os arquivos do diretório que tenham nomes como "bom" ou conter string "(NODES_'TASK ')" e depois copiar todos esses arquivos no diretório/tmp.

2.sh arquivo chmod + xe é 755 fromDirs.txt arquivo chmod + x e é 755

Este código me deu erro

IFS=$'\n' read -d '' -r -a dirs < fromDirs.txt
find "${dirs[@]}" -type f \( -name '*good*' -o -exec grep -F "(NODES_'TASK')" {} \; \) -exec cp {} /tmp/ \;

2.sh: não pode abrir fromDirs.txt: esse arquivo ou diretório não existe

2.sh: $ {dirs [...}: Substituição incorreta

Mas o arquivo fromDirs.txt existe e o 2.sh está sendo executado no diretório de alocação, também estou tentando fornecer o caminho completo em vez de fromDirs.txt e com o mesmo erro

Este código me deu erro

FILE=fromDirs.txt
IFS='\n'
while read -r dirs
do
find "$dirs" -type f \( -name '*good*' -o -exec grep -F "(NODES_'TASK')" {} \; \) -exec cp {} /tmp/ \;
done < "$FILE"

2.sh: 6: Erro de sintaxe: "pronto" inesperado (esperando "do")

Este código também me deu erro

FILENAME=fromDirs.txt

awk '{kount++;print  kount, $0}
     END{print "\nTotal " kount " lines read"}' $FILENAME

2.sh:: não encontrado awk: não é possível abrir o arquivo fromDirs.txt número da linha de origem 2

Então, como ler o arquivo linha por linha e fazer o que eu preciso?