retornará uma lista bash (separada por espaços), não uma matriz, portanto, você não pode realmente acessar os elementos individuais de uma maneira "direcionada".
Para convertê-lo em um array bash, use
filearray=( $(find * -type f -name "*.txt") )
(observe os espaços!)
Então, você pode acessar as entradas individuais como em
for ((i=0; i<n; i++))
do
file="${filarray[$i]}"
<whatever operation on the file>
done
onde o número de entradas pode ser recuperado via
n="${#filearray[@]}"
Observe, no entanto , que isso só funciona se seus nomes de arquivo não contiverem caracteres especiais (em particular espaço) e, portanto, mais uma vez, analisar a saída de lsou findnão é recomendado . No seu caso, eu recomendaria ver se a -execopção de findpode fazer o que você precisa para realizar.
Seu comando
retornará uma lista bash (separada por espaços), não uma matriz, portanto, você não pode realmente acessar os elementos individuais de uma maneira "direcionada".
Para convertê-lo em um array bash, use
(observe os espaços!)
Então, você pode acessar as entradas individuais como em
onde o número de entradas pode ser recuperado via
Observe, no entanto , que isso só funciona se seus nomes de arquivo não contiverem caracteres especiais (em particular espaço) e, portanto, mais uma vez, analisar a saída de
ls
oufind
não é recomendado . No seu caso, eu recomendaria ver se a-exec
opção defind
pode fazer o que você precisa para realizar.