linux – 扩展脚本以循环遍历多个文件并生成输出名称
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了linux – 扩展脚本以循环遍历多个文件并生成输出名称,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1196字,纯文字阅读大概需要2分钟。
内容图文
![linux – 扩展脚本以循环遍历多个文件并生成输出名称](/upload/InfoBanner/zyjiaocheng/951/21dd78a2a31b4a759c41e988d4bbe730.jpg)
我有以下脚本(名为vid2gif.sh)将视频文件转换为gif:
#! /bin/bash
ffmpeg -i $1 /tmp/gif/out%04d.gif
gifsicle --delay=10 --loop /tmp/gif/*.gif > $2
我可以使用命令转换文件:
vid2gif.sh myvid.mp4 myvid.gif
如何让它转换文件夹中的所有mp4文件?也就是说,如何进行以下命令工作:
vid2gif.sh *.mp4
脚本应该输出文件* .gif.谢谢你的帮助.
解决方法:
#!/bin/sh
for f; do
tempdir=$(mktemp -t -d gifdir.XXXXXX)
ffmpeg -i "$f" "$tempdir/out%04d.gif"
gifsicle --delay=10 --loop "$tempdir"/*.gif >"${f%.*}.gif"
rm -rf "$tempdir"
done
让我们回顾一下这是如何工作的:
>迭代
for f; do
相当于“$@”中的f;也就是说,它遍历所有命令行参数.如果你想要遍历当前目录中的所有MP4,那么这将是f in * .mp4; do或者循环遍历作为第一个命令行参数传递的目录中命名的所有MP4,它将是“$1”/ *中的f.mp4;做.为了支持这两种用法 – 但是如果没有传递目录则使用第一种用法 – 它将用于“${1: – .}”/ *.mp4;做.
>临时目录使用
因为原始脚本会将/ tmp / gif重用于所有内容,所以您将从其他输入源获取文件.最好通过为每个输入文件创建一个新的临时目录来避免这种情况,mktemp将自动执行该目录.
>创建.gif名称
“${f%.*}”是一个参数扩展,删除了最后一个之后的所有内容.在一个文件中;有关bash中字符串操作的文档,请参阅BashFAQ #100,包括此特定表单.
因此,“${f%.*}.gif”剥离现有的扩展名,并添加.gif扩展名.
内容总结
以上是互联网集市为您收集整理的linux – 扩展脚本以循环遍历多个文件并生成输出名称全部内容,希望文章能够帮你解决linux – 扩展脚本以循环遍历多个文件并生成输出名称所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。