You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写Bash脚本实现查找文件时每找到10个就暂停10秒再继续

Bash遍历文件批量休眠的修复方案

原有代码核心问题

  • 逻辑结构错误:计数判断放在循环外部,仅会在脚本启动时执行一次,无法在每找到10个文件时触发休眠逻辑
  • 子shell变量隔离:通过管道将find结果传给while循环时,while运行在独立子shell中,循环内修改的x变量无法同步到父shell,计数逻辑完全失效

修复后可运行代码

#!/bin/bash
declare -i x=0
# 替换为你要遍历的目标文件夹路径
TARGET_DIR="/myfolder"

# 用进程替换替代管道,避免子shell问题
while read -r file; do
  echo "$file"
  ((x++))
  # 每处理10个文件执行一次休眠
  if (( x == 10 )); then
    echo "已累计找到10个文件,休眠10秒后继续执行"
    sleep 10
    # 重置计数器,下次计数到10再次触发休眠
    x=0
  fi
done < <(find "$TARGET_DIR" -type f -maxdepth 5)

关键逻辑说明

  • 用read -r读取文件名,避免文件名包含特殊字符(如反斜杠、空格)时出现解析错误
  • 进程替换语法< <(find命令)让while循环运行在当前shell环境,保证x变量的修改可以正常生效
  • 计数判断内置于循环内部,每处理一个文件就校验计数,达标后自动休眠、重置计数后继续处理剩余文件

内容的提问来源于stack exchange,提问作者lucian_v

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 09:54:02