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=()
配列変数をまったく定義する必要はありません。無視しても構いません。