gpt4 book ai didi

bash - 提取文件名以命名其他文件时出错

转载 作者:行者123 更新时间:2023-11-29 09:22:59 24 4
gpt4 key购买 nike

我正在尝试使用 FFmpeg 将视频转换为 Bash 中的图像。我想使用视频的文件名来命名相应的图像(后跟一个整数)。

如果我在同一目录中导出文件,我能够做到这一点:

for file in `find . -name "*.mp4"`; do ffmpeg -i $file -q 1 $file'_'%d.jpeg; done

但是,如果我要将图像导出到所需的目录,则会出现错误。看起来 $file 的值不仅仅是文件名,而是一个目录。

我在尝试什么:

for file in `find . -name "*.mp4"`; do ffmpeg -i $file -q 1 ~/testfolder/$file'_'%d.jpeg; done

我的问题是:我怎样才能正确提取要在此处使用的文件名?

最佳答案

这样做,因为它可以处理包含任何特殊字符(包括换行符,很少使用但在文件名中有效)的文件。

destdir=~/testfolder/
while read -u 5 -r -d '' file
do
name=$(basename "$file")
ffmpeg -i "$file" -q 1 "$destdir/${file}_%d.jpeg" </dev/null
done 5< <(find . -name "*.mp4" -print0)

basename 命令是一个外部程序。您可以仅使用 shell 扩展通过以下行获得相同的结果:

name=${file%/}
name=${name##*/}

关于bash - 提取文件名以命名其他文件时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42462690/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com