J'essaie de rechercher des fichiers en utilisant find
et de placer ces fichiers dans un tableau Bash afin de pouvoir effectuer d'autres opérations sur eux (par exemple, ls
ou sur grep
eux). Mais je ne peux pas comprendre pourquoi readarray
ne lit pas la find
sortie car elle y est canalisée.
Supposons que j'ai deux fichiers dans le répertoire en cours, file1.txt
et file2.txt
. La find
sortie 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 echo
sortie, mon tableau est vide.
Alors qu'est-ce que je fais mal ici? Pourquoi readarray
ne pas lire find
la sortie de son entrée standard et mettre ces chaînes dans le tableau?
readarray -d '' < <(find your_args -print0)