Empurra para o array com o find find

2

Eu quero iterar todos os arquivos encontrados por find e adicionar cada um a um array. Aqui está o que eu tenho até agora:

myarray=()
find . -name '*.php' -exec myarray\+=\({}\) \;
echo "${myarray[@]}"

Em vez disso, produz muito disso:

find: myarray+=(./somedir/somefile.php): No such file or directory

Existe uma maneira de fazer isso funcionar com o escape adequado?

    
por AmadeusDrZaius 09.03.2015 / 21:52

1 resposta

4

Sua abordagem deve ser a seguinte. Para continuar pensando, você faria algo como:

myarray=()

while IFS= read -rd '' files; do myarray+=("$files")
 done < <(find . -type f -name '*.php' -print0)

printf '%s\n' "${myarray[@]}"

Como uma nota lateral. Você não precisa definir myarray=() a variável array. Você pode deixar isso de lado.

    
por 09.03.2015 / 22:00