使用 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=()根本不需要定义数组变量。你可以把它忽略掉。

相关内容