Я пытаюсь найти файлы с помощью findи поместить эти файлы в массив Bash, чтобы я мог выполнять над ними другие операции (например, lsили grepих). Но я не могу понять, почему readarrayне читает findвывод, так как он передается по нему.
Скажем, у меня есть два файла в текущем каталоге, file1.txtи file2.txt. Таким образом, findвывод выглядит следующим образом:
$ find . -name "file*"
./file1.txt
./file2.txt
Поэтому я хочу передать это в массив, двумя элементами которого являются строки "./file1.txt"и "./file2.txt"(без кавычек, очевидно).
Я пробовал это, среди прочего:
$ declare -a FILES
$ find . -name "file*" | readarray FILES
$ echo "${FILES[@]}"; echo "${#FILES[@]}"
0
Как видно из echoвывода, мой массив пуст.
Так что именно я здесь делаю не так? Почему readarrayне считывать findвывод в качестве стандартного ввода и помещать эти строки в массив?
readarray -d '' < <(find your_args -print0)