我想迭代找到的所有文件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=()
根本不需要定义数组变量。你可以把它忽略掉。