如何通过adb保存多个Android截图?实现按序号命名避免覆盖
解决ADB截图自动按序号命名避免覆盖的方法
方法一:单行命令直接执行
可以直接在终端中执行以下命令组合,每次执行都会自动生成下一个序号的截图文件:
# 获取当前最大序号并计算下一个序号 next_num=$(ls ~/Desktop/screen-*.png 2>/dev/null | sed 's/.*screen-\([0-9]*\)\.png/\1/' | sort -n | tail -1) next_num=$((next_num + 1)) # 保存截图 adb exec-out screencap -p > ~/Desktop/screen-${next_num:-1}.png
命令解释:
ls ~/Desktop/screen-*.png 2>/dev/null:列出桌面下所有带序号的截图文件,2>/dev/null用来屏蔽找不到文件时的错误提示sed 's/.*screen-\([0-9]*\)\.png/\1/':提取文件名中的数字序号部分sort -n | tail -1:对序号进行数字排序并取最大的那个next_num=${next_num:-1}:如果不存在任何带序号的截图文件,默认从1开始命名
方法二:批量重命名原有文件并添加快捷函数
如果之前已经有默认的screen.png文件,可以先将其重命名为screen-1.png,避免后续序号混乱:
[ -f ~/Desktop/screen.png ] && mv ~/Desktop/screen.png ~/Desktop/screen-1.png
之后可以在你的~/.bashrc或~/.zshrc中添加一个自定义函数,以后只需输入adbscreen就能一键保存带序号的截图:
adbscreen() { local save_dir=~/Desktop local file_prefix="screen-" local file_ext=".png" # 检查并转换旧的无序号截图文件 [ -f "${save_dir}/screen.png" ] && mv "${save_dir}/screen.png" "${save_dir}/${file_prefix}1${file_ext}" # 获取已存在的最大序号 local max_seq=$(ls "${save_dir}/${file_prefix}"*"${file_ext}" 2>/dev/null | sed "s/.*${file_prefix}\([0-9]*\)${file_ext}/\1/" | sort -n | tail -1) local next_seq=$((max_seq + 1)) # 处理首次执行的情况 next_seq=${next_seq:-1} # 执行截图保存 adb exec-out screencap -p > "${save_dir}/${file_prefix}${next_seq}${file_ext}" echo "截图已保存至:${save_dir}/${file_prefix}${next_seq}${file_ext}" }
添加完成后,执行source ~/.bashrc(或对应的rc文件)使函数生效,之后每次输入adbscreen即可自动保存新的序号截图。
内容的提问来源于stack exchange,提问作者anonymoose
相关产品推荐
相关产品推荐

