我正在尝试使用来搜索文件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)