使用wget下载含重复文件名的多文件时自定义重命名格式
批量下载文件并自定义重复文件名格式
方案一:Python脚本(推荐,灵活可控)
这种方式能精准控制重复文件的命名规则,完全满足文件名_序号.扩展名的需求。
步骤:
- 确保安装了
requests库,没有的话执行:
pip install requests
- 创建Python脚本(比如
download_files.py),内容如下:
import os import requests def get_filename_from_url(url): # 从链接提取文件名 filename = url.split('/')[-1] # 拆分文件名和扩展名 if '.' in filename: name_part, ext_part = filename.rsplit('.', 1) return name_part, ext_part else: return filename, '' def download_file(url, save_dir='./'): if not os.path.exists(save_dir): os.makedirs(save_dir) name_part, ext_part = get_filename_from_url(url) # 生成目标文件名 if ext_part: base_name = f"{name_part}.{ext_part}" else: base_name = name_part target_path = os.path.join(save_dir, base_name) counter = 1 # 检查文件是否存在,存在则递增序号 while os.path.exists(target_path): if ext_part: target_name = f"{name_part}_{counter}.{ext_part}" else: target_name = f"{name_part}_{counter}" target_path = os.path.join(save_dir, target_name) counter += 1 # 下载文件 try: response = requests.get(url, stream=True) response.raise_for_status() with open(target_path, 'wb') as f: for chunk in response.iter_content(chunk_size=8192): f.write(chunk) print(f"已下载:{target_path}") except Exception as e: print(f"下载失败 {url}:{str(e)}") if __name__ == '__main__': # 读取链接文件,替换成你的链接文件名 url_file = 'urls.txt' with open(url_file, 'r', encoding='utf-8') as f: urls = [line.strip() for line in f if line.strip()] for url in urls: download_file(url)
- 把你的链接文件命名为
urls.txt,和脚本放在同一目录,执行脚本:
python download_files.py
方案二:Shell脚本(结合curl)
如果熟悉Linux/macOS的shell环境,也可以用这种方式:
创建脚本download_with_custom_rename.sh:
#!/bin/bash URL_FILE="urls.txt" SAVE_DIR="./downloads" mkdir -p "$SAVE_DIR" while IFS= read -r url; do [ -z "$url" ] && continue filename=$(basename "$url") # 拆分文件名和扩展名 if [[ "$filename" == *.* ]]; then name_part="${filename%.*}" ext_part="${filename##*.}" else name_part="$filename" ext_part="" fi counter=1 if [ -n "$ext_part" ]; then target="$SAVE_DIR/$name_part.$ext_part" else target="$SAVE_DIR/$name_part" fi while [ -f "$target" ]; do if [ -n "$ext_part" ]; then target="$SAVE_DIR/${name_part}_${counter}.${ext_part}" else target="$SAVE_DIR/${name_part}_${counter}" fi ((counter++)) done curl -o "$target" "$url" echo "已下载:$target" done < "$URL_FILE"
赋予执行权限并运行:
chmod +x download_with_custom_rename.sh ./download_with_custom_rename.sh
两种方案都会自动检测已存在的文件,将重复文件命名为文件名_序号.扩展名的格式,比如第二个file.exe会被命名为file_1.exe,第三个为file_2.exe,以此类推。
内容的提问来源于stack exchange,提问作者Krzysiek127
相关产品推荐
相关产品推荐

