本文目录导读:

当然可以!实用脚本完全可以批量截取,而且这正是脚本(Shell、Python、Node.js 等)的强项之一。
“截取”可以指截取图片的一部分(裁剪)、截取视频中的一个片段,或者从文本/数据中提取特定内容。
下面我为你提供几个最常用、最实用的批量截取脚本方案,按使用场景分类:
批量截取图片(裁剪)
核心工具:ImageMagick (几乎支持所有格式,命令行神器)
- 安装:
- macOS:
brew install imagemagick - Ubuntu/Debian:
sudo apt install imagemagick - Windows: 下载安装包并添加到环境变量
- macOS:
实用脚本:批量将图片裁切成正方形(从中心裁切)
保存为 crop_square.sh,放入包含图片的文件夹中运行。
#!/bin/bash
# 批量将文件夹里所有 jpg/png 图片从中心裁切成 500x500 像素
for file in *.jpg *.png *.jpeg; do
# 检查文件是否存在,避免报错
if [ -f "$file" ]; then
echo "正在处理: $file"
# convert 输入文件 -gravity center (从中心) -extent 宽x高 输出文件
# 这里 % 表示用文件名主体,_cropped 作为后缀
convert "$file" -gravity center -extent 500x500 "${file%.*}_cropped.${file##*.}"
fi
done
echo "所有图片处理完成!"
- 修改建议:将
500x500改为你需要的尺寸,或者改为-crop 500x500+0+0(从左上角开始裁切)。
批量截取视频片段
核心工具:ffmpeg (视频处理的瑞士军刀)
- 安装:
- macOS:
brew install ffmpeg - Ubuntu:
sudo apt install ffmpeg - Windows: 下载预编译版本
- macOS:
实用脚本:批量截取视频前3秒(作为预览或缩略图)
保存为 trim_video.sh。
#!/bin/bash
# 批量截取所有 MP4 文件的前 3 秒,并输出为小尺寸的 GIF 或短片段
for file in *.mov *.mp4 *.avi; do
if [ -f "$file" ]; then
echo "截取视频: $file"
# -t 3 表示持续3秒,-ss 0 表示从第0秒开始
# -y 覆盖文件
# 输出为缩略图版本
ffmpeg -y -i "$file" -ss 00:00:00 -t 00:00:03 -c copy "${file%.*}_clip.${file##*.}"
fi
done
echo "视频截取完成!"
-
更高级用法:如果你想截取视频的每一帧(批量截图):
# 从视频文件 video.mp4 中每秒提取一帧,存为图片 ffmpeg -i video.mp4 -vf fps=1 frame_%04d.png
批量截取PDF页面(提取指定页)
核心工具:pdftk 或 ghostscript
实用脚本:提取每个PDF的第1页,生成新的PDF
#!/bin/bash
# 需要安装 pdftk
for file in *.pdf; do
if [ -f "$file" ]; then
echo "提取第一页: $file"
# A 表示输入文件,输出为 输入文件名_page1.pdf
pdftk "$file" cat 1 output "${file%.*}_page1.pdf"
fi
done
echo "提取完成!"
批量截取屏幕区域(自动化截图)
核心工具:scrot (Linux) 或 screencapture (macOS)
实用脚本(macOS):每隔2秒截取一次屏幕上的指定区域
#!/bin/bash
# 获取当前时间戳
timestamp=$(date +%Y%m%d_%H%M%S)
for i in {1..10}; do
# screencapture -R x,y,width,height 文件名
# 截取屏幕左上角 300x200 的区域
screencapture -R 0,0,300,200 "screenshot_${timestamp}_${i}.png"
sleep 2
done
echo "截图完成!"
批量从文件名中截取字符串(文本处理)
核心工具:bash 字符串操作
实用脚本:从文件名提取日期部分并重命名
假设你有文件 report_20240101.csv、data_20240102.csv,想提取日期并更名为 data_20240101_report.csv。
#!/bin/bash
for file in *.csv; do
# 提取第一个下划线后的部分作为日期
date_part="${file#*_}"
date_part="${date_part%.*}"
# 提取第一个下划线前的部分作为前缀
prefix="${file%%_*}"
# 重命名
mv "$file" "${prefix}_${date_part}_remaining.csv"
done
总结与推荐
| 场景 | 推荐工具 | 一句话说明 |
|---|---|---|
| 批量图片裁剪 | ImageMagick |
最专业,支持各种几何变换和滤镜。 |
| 批量视频截取 | ffmpeg |
万金油,几乎任何视频处理都需要它。 |
| 批量PDF提取 | pdftk / python-pdf |
简单直接,但复杂PDF可能出问题。 |
| 自动化屏幕截图 | scrot / screencapture |
系统自带或轻量级工具,适合定时任务。 |
| 文件名/文本截取 | bash / awk / sed |
无需安装,适合日常文件整理。 |
建议: 如果你是新手,从 ImageMagick(图片) 和 ffmpeg(视频) 开始,它们都有非常详细的文档和社区支持,且威力巨大。
注意:
- 备份数据! 在尝试批量操作前,最好先在测试文件夹或复制一份数据。
- 路径问题: 脚本默认处理当前目录下的文件,如果需要处理子文件夹,可以加上
find命令或**/*.jpg(需要开启 globstar)。 - 转义: 文件名中如果有空格或特殊字符,记得用
"$file"(双引号包裹变量)。
如果你有具体的截取需求(从每张图片的固定位置裁切、从视频的多个时间点截取),请告诉我,我可以帮你生成更精确的脚本。