Bash 用find命令的结果声明数组

Bash 用find命令的结果声明数组,bash,shell,Bash,Shell,我想将命令find*.txt的结果放入数组中,然后像这样迭代数组 for file in array do done 我需要放入数组,因为以后我需要访问数组。那么解决方案呢 for file in `find *.txt` do done 对我不好。使用数组分配语法: array=($(find *.txt)) 如果文件名中可能有空格,则应将 IFS=$"\n" 在上述命令之前。如果文件名中有换行符,它会变得非常复杂,我不确定有什么好方法来处理它 然后,您可以使用以下方法对其进行迭代

我想将命令
find*.txt
的结果放入数组中,然后像这样迭代数组

for file in array
do

done
我需要放入数组,因为以后我需要访问数组。那么解决方案呢

for file in `find *.txt`
do

done

对我不好。

使用数组分配语法:

array=($(find *.txt))
如果文件名中可能有空格,则应将

IFS=$"\n"
在上述命令之前。如果文件名中有换行符,它会变得非常复杂,我不确定有什么好方法来处理它

然后,您可以使用以下方法对其进行迭代:

for file in "${array[@]}"

使用数组分配语法:

array=($(find *.txt))
如果文件名中可能有空格,则应将

IFS=$"\n"
在上述命令之前。如果文件名中有换行符,它会变得非常复杂,我不确定有什么好方法来处理它

然后,您可以使用以下方法对其进行迭代:

for file in "${array[@]}"

使用数组分配语法:

array=($(find *.txt))
如果文件名中可能有空格,则应将

IFS=$"\n"
在上述命令之前。如果文件名中有换行符,它会变得非常复杂,我不确定有什么好方法来处理它

然后,您可以使用以下方法对其进行迭代:

for file in "${array[@]}"

使用数组分配语法:

array=($(find *.txt))
如果文件名中可能有空格,则应将

IFS=$"\n"
在上述命令之前。如果文件名中有换行符,它会变得非常复杂,我不确定有什么好方法来处理它

然后,您可以使用以下方法对其进行迭代:

for file in "${array[@]}"

如果您使用的是
bash
4,并且由于您似乎没有使用
find
的任何其他功能,除了它能够在子目录中递归外,我建议改用
globstar
选项

shopt -s globstar
array=( **/*.txt )

这避免了产生一个外部进程来运行
find
,也避免了在任何匹配文件的名称中有空格时出现任何令人讨厌的意外情况。

如果您使用的是
bash
4,由于您似乎没有使用
find
的任何其他功能,除了它在子目录中递归的功能,因此我建议改用
globstar
选项

shopt -s globstar
array=( **/*.txt )

这避免了产生一个外部进程来运行
find
,也避免了在任何匹配文件的名称中有空格时出现任何令人讨厌的意外情况。

如果您使用的是
bash
4,由于您似乎没有使用
find
的任何其他功能,除了它在子目录中递归的功能,因此我建议改用
globstar
选项

shopt -s globstar
array=( **/*.txt )

这避免了产生一个外部进程来运行
find
,也避免了在任何匹配文件的名称中有空格时出现任何令人讨厌的意外情况。

如果您使用的是
bash
4,由于您似乎没有使用
find
的任何其他功能,除了它在子目录中递归的功能,因此我建议改用
globstar
选项

shopt -s globstar
array=( **/*.txt )

这避免了产生一个外部进程来运行
查找
,也避免了在任何匹配文件的名称中有空格时出现任何令人不快的意外情况。

如果您确定文件名中没有任何换行符,
mapfile
是一个不错的选择:

mapfile -t array < <(find . -name '*.txt')

mapfile-t array<如果您确定文件名中没有任何换行符,
mapfile
是一个不错的选择:

mapfile -t array < <(find . -name '*.txt')

mapfile-t array<如果您确定文件名中没有任何换行符,
mapfile
是一个不错的选择:

mapfile -t array < <(find . -name '*.txt')

mapfile-t array<如果您确定文件名中没有任何换行符,
mapfile
是一个不错的选择:

mapfile -t array < <(find . -name '*.txt')

mapfile-t数组<其他答案都有优点。作为对它们的补充,这里有一种方法:(a)即使在最困难的文件名上也是安全的,(b)允许充分利用
find
的功能,以及(c)避免
eval

array=()
while read -r -d $'\0'; do
    array+=("$REPLY")
done < <(find . -name '*.txt' -print0)
array=()
而读取-r-d$'\0';做
数组+=(“$REPLY”)

其他答案都有优点。作为对它们的补充,这里有一种方法:(a)即使在最困难的文件名上也是安全的,(b)允许充分利用
find
的功能,以及(c)避免
eval

array=()
while read -r -d $'\0'; do
    array+=("$REPLY")
done < <(find . -name '*.txt' -print0)
array=()
而读取-r-d$'\0';做
数组+=(“$REPLY”)

其他答案都有优点。作为对它们的补充,这里有一种方法:(a)即使在最困难的文件名上也是安全的,(b)允许充分利用
find
的功能,以及(c)避免
eval

array=()
while read -r -d $'\0'; do
    array+=("$REPLY")
done < <(find . -name '*.txt' -print0)
array=()
而读取-r-d$'\0';做
数组+=(“$REPLY”)

其他答案都有优点。作为对它们的补充,这里有一种方法:(a)即使在最困难的文件名上也是安全的,(b)允许充分利用
find
的功能,以及(c)避免
eval

array=()
while read -r -d $'\0'; do
    array+=("$REPLY")
done < <(find . -name '*.txt' -print0)
array=()
而读取-r-d$'\0';做
数组+=(“$REPLY”)

完成<为什么要使用
查找
find*.txt
和just
*.txt
之间没有区别,除非您有名称以
.txt
结尾的子目录。你是说
find-名称“*.txt”
?为什么要使用
find
find*.txt
和just
*.txt
之间没有区别,除非您有名称以
.txt
结尾的子目录。你是说
find-名称“*.txt”
?为什么要使用
find
find*.txt
和just
*.txt
之间没有区别,除非您有名称以
.txt
结尾的子目录。你是说
find-名称“*.txt”
?为什么要使用
find
find*.txt
和just
*.txt
之间没有区别,除非您有名称以
.txt
结尾的子目录。你是说
find-名称“*.txt”
?他甚至不在子目录中递归。然后可以使用更简单的
array=(*.txt)
(不需要
bash
4)。这个r