J'essaie de rechercher des fichiers en utilisant findet de placer ces fichiers dans un tableau Bash afin de pouvoir effectuer d'autres opérations sur eux (par exemple, lsou sur grepeux). Mais je ne peux pas comprendre pourquoi readarrayne lit pas la findsortie car elle y est canalisée.
Supposons que j'ai deux fichiers dans le répertoire en cours, file1.txtet file2.txt. La findsortie est donc la suivante:
$ find . -name "file*"
./file1.txt
./file2.txt
Je veux donc canaliser cela dans un tableau dont les deux éléments sont les chaînes "./file1.txt"et "./file2.txt"(sans guillemets, évidemment).
J'ai essayé cela, entre autres:
$ declare -a FILES
$ find . -name "file*" | readarray FILES
$ echo "${FILES[@]}"; echo "${#FILES[@]}"
0
Comme vous pouvez le voir sur la echosortie, mon tableau est vide.
Alors qu'est-ce que je fais mal ici? Pourquoi readarrayne pas lire findla sortie de son entrée standard et mettre ces chaînes dans le tableau?
readarray -d '' < <(find your_args -print0)