如何将 find 的输出放入数组

Ank*_*kit 3 shell-script

我是Unix的新手。我有一个要求,我必须将 find 语句的输出放在数组中,因为稍后在脚本中我必须一一使用输出行。我的 find 语句将根据条件检索目录的位置。

以下是查找语句:

find blah -mindepth 3 -maxdepth 3 -type d  -regex ".*/V[0-9]+/wsdls+" 
Run Code Online (Sandbox Code Playgroud)

dog*_*ane 8

你可以这样做:

array=( $(find blah -mindepth 3 -maxdepth 3 -type d -regex ".*/V[0-9]+/wsdls+") )

# loop over it
for i in ${array[@]}
do
    echo $i
done

# or in a while loop
i=0;
while [ $i -lt ${#array[@]} ]
do
    echo $i: ${array[$i]}
    ((i++))
done
Run Code Online (Sandbox Code Playgroud)

  • 不过,您需要先设置 `IFS=$'\n'`:如果任何文件名有空格,您希望将它们保留为单个数组元素。在引用数组时,您还需要使用双引号:`for i in "${array[@]}"` (4认同)