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

如何用Bash遍历CSV两列调用bulk-bing-image-downloader爬取图片

实现方案

方案1:Bash 原生循环(推荐,易调试修改)

适合不熟悉awk语法的场景,代码如下:

#!/bin/bash
# 逐行读取CSV文件,按逗号拆分字段
while IFS=, read -r keyword folder search || [ -n "$keyword" ]; do
    # 跳过表头行
    [ "$keyword" = "keyword" ] && continue
    # 仅search值为1时执行下载
    if [ "$search" -eq 1 ]; then
        echo "当前下载关键词:$keyword,存储目录:$folder"
        ./bbid.py -s "$keyword" --limit 10 --adult-filter-off -o "$folder"
    fi
done < test.csv

使用说明:

  • 变量包裹双引号,避免关键词/文件夹名带空格、特殊符号时参数解析错误
  • 末尾的|| [ -n "$keyword" ]兼容CSV最后一行无换行符的场景,不会漏读最后一行数据

方案2:Awk 实现

修正你原有awk脚本的错误后的代码如下:

awk '
BEGIN {
    FS = ","
    FPAT = "([^,]+)|(\"[^\"]+\")"
}
# 跳过表头 + search值为1才执行
NR > 1 && $3 == 1 {
    cmd = sprintf("./bbid.py -s \"%s\" --limit 10 --adult-filter-off -o \"%s\"", $1, $2)
    print "执行命令:" cmd
    system(cmd)
}
' test.csv

修正点说明:

  • 原有-F,写法错误,改为在BEGIN块内定义FS = ","指定分隔符
  • awk内不能直接执行shell命令,需通过system()函数调用
  • 新增$3 == 1的判断逻辑,符合跳过search=0行的需求
  • 替换输出目录参数为第二列的folder值,而非原有错误的复用keyword列

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 06:39:03