实用脚本能批量截取吗?

wen 实用脚本 13

本文目录导读:

实用脚本能批量截取吗?

  1. 批量截取图片(裁剪)
  2. 批量截取视频片段
  3. 批量截取PDF页面(提取指定页)
  4. 批量截取屏幕区域(自动化截图)
  5. 批量从文件名中截取字符串(文本处理)
  6. 总结与推荐

当然可以!实用脚本完全可以批量截取,而且这正是脚本(Shell、Python、Node.js 等)的强项之一。

“截取”可以指截取图片的一部分(裁剪)截取视频中的一个片段,或者从文本/数据中提取特定内容

下面我为你提供几个最常用、最实用的批量截取脚本方案,按使用场景分类:

批量截取图片(裁剪)

核心工具:ImageMagick (几乎支持所有格式,命令行神器)

  • 安装
    • macOS: brew install imagemagick
    • Ubuntu/Debian: sudo apt install imagemagick
    • Windows: 下载安装包并添加到环境变量

实用脚本:批量将图片裁切成正方形(从中心裁切) 保存为 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: 下载预编译版本

实用脚本:批量截取视频前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页面(提取指定页)

核心工具:pdftkghostscript

实用脚本:提取每个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.csvdata_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(视频) 开始,它们都有非常详细的文档和社区支持,且威力巨大。

注意:

  1. 备份数据! 在尝试批量操作前,最好先在测试文件夹或复制一份数据。
  2. 路径问题: 脚本默认处理当前目录下的文件,如果需要处理子文件夹,可以加上 find 命令或 **/*.jpg (需要开启 globstar)。
  3. 转义: 文件名中如果有空格或特殊字符,记得用 "$file"(双引号包裹变量)。

如果你有具体的截取需求(从每张图片的固定位置裁切、从视频的多个时间点截取),请告诉我,我可以帮你生成更精确的脚本。

抱歉,评论功能暂时关闭!