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, ls
ou grep
eles). Mas não consigo entender por que readarray
não está lendo a find
saída, pois ela é canalizada para ela.
Digamos que eu tenha dois arquivos no diretório atual file1.txt
e file2.txt
. Portanto, a find
saí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 echo
saída, minha matriz está vazia.
Então, o que exatamente estou fazendo de errado aqui? Por que a saída da readarray
leitura não é find
sua entrada padrão e coloca essas strings na matriz?
readarray -d '' < <(find your_args -print0)