Ao usar find ... -exec ... {} +
, o {}
deve ser a última coisa antes do +
(porque find
adiciona os nomes de caminho ao final do comando). O erro vem de perder o ;
no final do primeiro find
.
Não há nenhum benefício em primeiro localizar todos os subdiretórios e, em seguida, executar outra pesquisa sobre eles, portanto, o comando find
pode ser substituído por um único find
:
find "./$1_"* -type f -name 'wood.dat'
Isso procuraria por arquivos chamados wood.dat
em todos os diretórios correspondentes a "./$1_"*
.
Toda a tarefa seria
numWoodFiles=$( find "./$1_"* -type f -name 'wood.dat' | wc -l )
Eu removi o% outer (...)
, pois não precisamos criar um array para um único inteiro.