bash中的嵌套for循环未正确迭代?
我对脚本/编程/所有事情都是新手,似乎无法找到我试图迭代的bash脚本/循环 我有一个名为“folder”的目录,其中有许多子目录,每个子目录都包含我想要回显的文件(目前) 我有这个,但它似乎不打印子目录中的文件,而是打印子目录本身。我将如何修改脚本以使其工作bash中的嵌套for循环未正确迭代?,bash,shell,Bash,Shell,我对脚本/编程/所有事情都是新手,似乎无法找到我试图迭代的bash脚本/循环 我有一个名为“folder”的目录,其中有许多子目录,每个子目录都包含我想要回显的文件(目前) 我有这个,但它似乎不打印子目录中的文件,而是打印子目录本身。我将如何修改脚本以使其工作 for directory in *; do for thing in $directory do echo $thing done done Bash版
for directory in *;
do
for thing in $directory
do
echo $thing
done
done
Bash版本4.0添加了一个新的globbing选项,名为
globstar
,它在设置模式时以不同的方式处理模式**
#!/bin/bash
shopt -s globstar
for file in folder/** # with '**' bash recurses all the directories
do
echo "$file"
done
Bash版本4.0添加了一个新的globbing选项,名为
globstar
,它在设置模式时以不同的方式处理模式**
#!/bin/bash
shopt -s globstar
for file in folder/** # with '**' bash recurses all the directories
do
echo "$file"
done
for
循环本身不会遍历文件系统;它只在字符串序列上迭代。您需要迭代第二个循环的路径名扩展结果
for directory in *;
do
for thing in "$directory"/*
do
echo "$thing"
done
done
您可以使用一个具有更复杂图案的循环来完成此操作:
for thing in */*; do
echo "$thing"
done
for
循环本身不会遍历文件系统;它只在字符串序列上迭代。您需要迭代第二个循环的路径名扩展结果
for directory in *;
do
for thing in "$directory"/*
do
echo "$thing"
done
done
您可以使用一个具有更复杂图案的循环来完成此操作:
for thing in */*; do
echo "$thing"
done
您不想要
${directory}/*
?或者perphaps(cd“$directory”;表示*中的内容;do echo$thing;done;)
。是否要${directory}/*
?或者perphaps(cd“$directory”;表示*中的内容;do echo$thing;done;)
。所谓无循环,是指类似于some_命令*/*
?我假设内部循环的主体比单个内置命令更复杂,在这种情况下,大型匹配集会出现问题。所谓无循环,是指类似于some_command*/*
?我假设内部循环的主体比单个内置命令更复杂,在这种情况下,大型匹配集会出现问题;你可以直接在模式上迭代,这(我认为)不需要在内存中存储完全匹配;您可以直接迭代模式,我认为这不需要在内存中存储完全匹配。