私はを使用してファイルを検索しfind
、それらのファイルをBash配列に配置して、他の操作(ls
またはなどgrep
)を実行できるようにしています。しかしreadarray
、find
パイプで出力を読み取っていない理由を理解できません。
現在のディレクトリに2つのファイルがあるfile1.txt
としfile2.txt
ます。したがって、find
出力は次のようになります。
$ find . -name "file*"
./file1.txt
./file2.txt
だから私はそれを2つの要素が文字列である配列にパイプしたいと思います("./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)