Estou tentando procurar arquivos usando find, e colocar esses arquivos em uma matriz Bash para que eu possa fazer outras operações sobre eles (por exemplo, lsou grepeles). Mas não consigo entender por que readarraynão está lendo a findsaída, pois ela é canalizada para ela.
Digamos que eu tenha dois arquivos no diretório atual file1.txte file2.txt. Portanto, a findsaída é a seguinte:
$ find . -name "file*"
./file1.txt
./file2.txt
Então, eu quero colocar isso em uma matriz cujos dois elementos são as strings "./file1.txt"e "./file2.txt"(sem aspas, obviamente).
Eu tentei isso, entre algumas outras coisas:
$ declare -a FILES
$ find . -name "file*" | readarray FILES
$ echo "${FILES[@]}"; echo "${#FILES[@]}"
0
Como você pode ver na echosaída, minha matriz está vazia.
Então, o que exatamente estou fazendo de errado aqui? Por que a saída da readarrayleitura não é findsua entrada padrão e coloca essas strings na matriz?
readarray -d '' < <(find your_args -print0)