Bash

使用 find exec 推入數組

  • March 9, 2015

我想遍歷找到的所有文件find並將每個文件添加到數組中。這是我到目前為止所擁有的:

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

相反,它會產生很多這樣的:

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

有沒有辦法通過適當的轉義來完成這項工作?

你的方法應該如下。為了保持你的思維方式,你會做這樣的事情:

myarray=()

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

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

作為旁注。您根本不需要定義myarray=()數組變數。你可以忽略它。

引用自:https://unix.stackexchange.com/questions/189120