如何使用wget从CSV下载指定图片并存储到对应ID目录?
修正后的CSV图片下载Bash脚本
你的脚本存在命令替换错误、变量引用语法错误、wget参数顺序错误等问题,以下是修正后的完整脚本:
#!/usr/bin/bash while IFS=',' read -r id col2 col3 col4 img1 img2 img3 img4 rest do # 跳过表头(如果CSV有表头的话,需要就保留,不需要就注释掉) # if [ "$id" = "id" ]; then continue; fi # 目标目录路径 dest_dir="./$id" # 下载每张图片到对应目录,自动保留原文件名 if [ -n "$img1" ]; then wget -P "$dest_dir" "$img1" fi if [ -n "$img2" ]; then wget -P "$dest_dir" "$img2" fi if [ -n "$img3" ]; then wget -P "$dest_dir" "$img3" fi if [ -n "$img4" ]; then wget -P "$dest_dir" "$img4" fi done < file.csv
关键修改说明:
- 用
IFS=',' read -r直接拆分CSV列,避免多次调用cut,更高效且能规避字段含空格的问题 - 使用wget的
-P参数自动将文件保存到指定目录,无需手动拼接路径,同时保留图片原文件名 - 增加空值判断
[ -n "$img1" ],避免对空URL执行下载操作 - 采用Bash标准的
$var变量引用语法,替代原脚本错误的%var%写法 - 移除了原脚本中无效的
EXT变量和错误的字符串拼接逻辑 - 可选跳过表头行,根据你的CSV是否包含表头自行启用
注意事项:
- 确保CSV文件中没有包含逗号的字段(如果有,建议使用
csvkit这类专业CSV解析工具) - 确认所有
id对应的目录已提前创建完成
内容的提问来源于stack exchange,提问作者nm1234
相关产品推荐
相关产品推荐

