find execを使用して配列にプッシュする

find execを使用して配列にプッシュする

find見つかったすべてのファイルを繰り返し、各ファイルを配列に追加したいと思います。これが私が今まで持っているものです:

myarray=()
find . -name '*.php' -exec myarray\+=\({}\) \;
echo "${myarray[@]}"

代わりに、次のようなものをたくさん生成します。

find: myarray+=(./somedir/somefile.php): No such file or directory

適切なエスケープを使用してこれを行う方法はありますか?

ベストアンサー1

アプローチは次のとおりです。考え方をバランスよく保つには、次のようにします。

myarray=()

while IFS= read -rd '' files; do myarray+=("$files")
 done < <(find . -type f -name '*.php' -print0)

printf '%s\n' "${myarray[@]}"

参考までに。myarray=()配列変数をまったく定義する必要はありません。無視しても構いません。

おすすめ記事