【问题标题】:Bash Loop that changes output file name更改输出文件名的 Bash Loop
【发布时间】:2021-07-21 07:26:11
【问题描述】:

我有一个 bash 别名,可以将 .mov 转换为 .gif 我有一个 .mov 文件夹,我想对文件夹中的每个文件执行别名 我有一个有效的循环,它运行并转换文件夹中的每个文件,但它(提示我)覆盖每个文件名。


alias video_to_gif='function video_to_gif(){ ffmpeg -i $1 output.gif && gifsicle -O3 output.gif -o output.gif && say "Video is ready!"};video_to_gif'


for file in *.mov
do
video_to_gif $file
done

我需要在循环中添加一条指令,更改它转换的每个文件的文件名(任何文件名,只要每个文件都不同)

目前如果我文件夹中有n个文件,它会运行并转换每个文件,但文件夹最后会有n+1个文件,其中一个转换的文件是最后一个原始文件的转换

【问题讨论】:

  • 为什么需要别名?在 bashrc 中定义该函数有什么问题?
  • @hughm-01 :拥有一个创建函数的别名有什么意义?这有点奇怪......

标签: bash loops terminal alias


【解决方案1】:

在您的情况下,只需将每个输入文件的扩展名从 .mov 更改为 .gif 就足够了。

顺便说一句:你不需要别名,特别是因为你已经写了一个函数:

video_to_gif() {
    out="${1%.*}.gif"
    ffmpeg -i "$1" "$out" &&
    gifsicle -O3 "$out" -o "$out"
    && say "Video is ready!"
}
for file in *.mov; do
    video_to_gif "$file"
done

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-12-22
    • 2017-10-29
    • 1970-01-01
    • 1970-01-01
    • 2014-07-23
    • 2014-09-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多