Ich versuche, mit Dateien nach Dateien zu suchen find
und diese Dateien in ein Bash-Array zu legen, damit ich andere Operationen an ihnen ausführen kann (z . B. ls
oder grep
sie). Aber ich kann nicht herausfinden, warum readarray
die find
Ausgabe nicht gelesen wird, wenn sie in sie geleitet wird.
Angenommen, ich habe zwei Dateien im aktuellen Verzeichnis file1.txt
und file2.txt
. Die find
Ausgabe ist also wie folgt:
$ find . -name "file*"
./file1.txt
./file2.txt
Also möchte ich das in ein Array leiten, dessen zwei Elemente die Zeichenfolgen sind "./file1.txt"
und "./file2.txt"
(natürlich ohne Anführungszeichen).
Ich habe dies unter anderem versucht:
$ declare -a FILES
$ find . -name "file*" | readarray FILES
$ echo "${FILES[@]}"; echo "${#FILES[@]}"
0
Wie Sie der echo
Ausgabe entnehmen können, ist mein Array leer.
Was genau mache ich hier falsch? Warum wird die Ausgabe nicht als Standardeingabe readarray
gelesen find
und diese Zeichenfolgen in das Array eingefügt?
readarray -d '' < <(find your_args -print0)