gpt4 book ai didi

bash - 循环遍历未知数量的具有渐进名称的文件夹

转载 作者:行者123 更新时间:2023-12-04 19:07:07 26 4
gpt4 key购买 nike

我正在尝试使用 bash 循环遍历未知数量的文件夹,这些文件夹以从 0 开始的渐进数字结尾。每个文件夹都被命名为处理器*,其中 * 代表渐进数字(例如处理器 0、处理器 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将保存给定迭代的结果。
来自 GNU HTML manual for bash :

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 - 循环遍历未知数量的具有渐进名称的文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66473244/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com