循环遍历未知数量的具有渐进名称的文件夹
Loop through unknown number of folders with progressive names
我正在尝试使用 bash 循环遍历未知数量的文件夹,这些文件夹以从 0 开始的递增数字结尾。每个文件夹都被命名为 processor*,其中 * 代表递增数字(例如 processor0 、处理器 1、处理器 2 等)。在每个循环中,脚本应执行这些命令 find ./ -name 'U' | while read U ; do cp "$U" ./0 ; done
.
我的 for 循环看起来像这样:
for i in processor*; do
cd ./processor$i
find ./ -name 'U' | while read U ; do cp "$U" ./0 ; done
cd ..
done
但它目前不起作用。
当您使用语法 for i in processor*
时,扩展 processor*
的结果将被迭代,变量 i
将保存给定迭代的结果。
The syntax of the for
command is:
for name [ [in [words …] ] ; ] do commands; done
Expand words
(see Shell Expansions), and execute commands once for each member in the resultant list, with name
bound to the current member.
例如,如果当前工作目录包含目录processor0
、processor1
和processor_something_else
,并且processor*
的扩展顺序是这样的,那么i
将具有以下单独迭代的值:
i
在第一次迭代中的值为 processor0
i
在第二次迭代中的值为 processor1
i
在第二次迭代中的值为 processor_something_else
表达式 ./processor$i
然后将在每次迭代中计算为以下内容:
./processorprocessor0
./processorprocessor1
./processorprocessor_something_else
这是因为 i
的值将随着 cd
命令的生成而扩展。
你真正想要的是使用cd ./"$i"
。
我正在尝试使用 bash 循环遍历未知数量的文件夹,这些文件夹以从 0 开始的递增数字结尾。每个文件夹都被命名为 processor*,其中 * 代表递增数字(例如 processor0 、处理器 1、处理器 2 等)。在每个循环中,脚本应执行这些命令 find ./ -name 'U' | while read U ; do cp "$U" ./0 ; done
.
我的 for 循环看起来像这样:
for i in processor*; do
cd ./processor$i
find ./ -name 'U' | while read U ; do cp "$U" ./0 ; done
cd ..
done
但它目前不起作用。
当您使用语法 for i in processor*
时,扩展 processor*
的结果将被迭代,变量 i
将保存给定迭代的结果。
The syntax of the
for
command is:
for name [ [in [words …] ] ; ] do commands; done
Expandwords
(see Shell Expansions), and execute commands once for each member in the resultant list, withname
bound to the current member.
例如,如果当前工作目录包含目录processor0
、processor1
和processor_something_else
,并且processor*
的扩展顺序是这样的,那么i
将具有以下单独迭代的值:
i
在第一次迭代中的值为processor0
i
在第二次迭代中的值为processor1
i
在第二次迭代中的值为processor_something_else
表达式 ./processor$i
然后将在每次迭代中计算为以下内容:
./processorprocessor0
./processorprocessor1
./processorprocessor_something_else
这是因为 i
的值将随着 cd
命令的生成而扩展。
你真正想要的是使用cd ./"$i"
。