![找到视频文件的分辨率高度后批量重命名](https://linux22.com/image/1019078/%E6%89%BE%E5%88%B0%E8%A7%86%E9%A2%91%E6%96%87%E4%BB%B6%E7%9A%84%E5%88%86%E8%BE%A8%E7%8E%87%E9%AB%98%E5%BA%A6%E5%90%8E%E6%89%B9%E9%87%8F%E9%87%8D%E5%91%BD%E5%90%8D.png)
尝试我的第一个脚本,进展不顺利。也许有人知道一个程序或可以帮助指出正确的方向。我想按顺序查找大量视频文件分辨率档案 - 仅高度(我知道两种方法可以实现这一点,使用 ffprobe 和 mediainfo);如果 720 或 1080 附加为后缀,在扩展名之前。如果文件不是 720 或 1080,则分为 2 个目录(650+ 和 649-)。我知道如何查找分辨率、创建目录、移动和重命名文件。我特别遇到的问题是按顺序排列多个文件,如果/和/或使用以及如何使用 ffprobe 或 mediainfo 进行重命名。谢谢。
答案1
这个简单的例子应该可以帮助你入门:
#!/bin/bash
if [ ! -d "650+" ] && [ ! -d "649-" ]; then
mkdir "650+" "649-"
fi
for f in *.mp4
do
height=$(ffprobe -v error -show_entries stream=height -of csv=p=0 "$f")
if [ "$height" -eq 1080 ] || [ "$height" -eq 720 ]; then
mv "$f" "${f%.*}_$height.${f##*.}"
fi
if [ "$height" -lt 650 ]; then
mv "$f" "649-"
else
mv "$f" "650+"
fi
done
正如您所见,该逻辑并不完美,因为它仅将高度小于 720 像素的视频移动到相应的目录中,但它显示了基本内容。(由于有待开会,没有时间对其进行改进。)此外,它不是递归的。不确定这是否是必需的。
另请参阅:
- 使用以下方法获取宽度 x 高度
ffprobe
- Bash 参数扩展- 有助于重命名
- Bash 比较运算符
- 壳牌检测- 检查脚本错误并提供建议