【发布时间】:2015-11-19 19:28:10
【问题描述】:
我正在尝试让此代码处理目录中的所有文件:https://github.com/kieranjol/ifi-ffv1/blob/master/ifi-ffv1.sh
我在终端中运行它并将路径添加到文件./ifi-ffv1.sh /path/to/file.mov。我怎样才能让它进入下一个?我还需要确保它只处理 AV 文件,例如 .avi/.mkv/*.mov 等。
我尝试过使用带有 shift 的 while 循环,但我也无法让它工作。
我尝试添加一个像这里这样的特定路径,但我失败了 http://www.cyberciti.biz/faq/unix-loop-through-files-in-a-directory/
我已经尝试过这个https://askubuntu.com/a/315338,它不断循环同一个文件,而不是移动到下一个文件。 http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO-7.html 这对我也没有帮助。
我知道这将是一个非常简单的解决方案,但我对此很陌生。
【问题讨论】:
-
有很多方法可以“处理”文件;你到底想完成什么?
-
你试过
for f in /path/to/*.avi /path/to/*.mkv path/to/*.mov; do ./ifi-ffv1.sh $f; done吗? -
感谢您的回复。我想在一个目录中的多个文件上运行我在 github 上编写的代码,一次一个。它转码、运行校验和、创建元数据 xml 等。@m7thon,你的意思是我用你的代码制作了第二个 bash 脚本吗?
-
说实话,我不太明白你的问题。如果您想在目录中的多个文件上运行脚本
ifi-ffv1.sh,我编写的命令应该可以解决问题(在 bash 文件中,或者只是在命令行中)。那么你真的想改变脚本本身,以便在给定目录中特定类型的所有文件上运行吗? -
对不起,我不清楚。是的,我想更改代码,以便它在目录中特定类型的所有文件上运行。但是,我想将目录保留为变量,以便我转到终端,键入 ./ifi-ffv1.sh /path/to/file.mov 并在该文件上运行脚本,并在目录。
标签: macos bash for-loop ffmpeg