迭代等于文件名bash

时间:2017-12-21 14:20:43

标签: linux bash

我在bash中有一个小脚本,我遇到了equals的问题。我在.mp4中有80个文件,我想将所有电影加入1,所以我写了一个脚本。我的文件名是例如2.mp4 5.mp4 10.mp4等...他们不是有序的,我没有例如13,14,15.mp4但我有12.mp4和16.mp4

我想在我的循环函数中用文件名等于迭代,我不知道如何......

for((i=1; i <= 200; i++))
{    
        if[ -f "$i.mp4" == WHAT HERE??? ] ; then
                mkvmerge -o /home/ftpuser/movies/Main/out/$i.mp4 /home/ftpuser/movies/Movie/test.mp4 \+ /home/ftpuser/movies/addMovie/$i.mp4
        else
                echo -e "${RED}Null${NC}"

fi
} 

1 个答案:

答案 0 :(得分:2)

if [ -f ${i}.mp4 ] ; then这个。如果文件存在,则then大小写将运行。否则,else会。

检查您是否在包含mp4文件的目录中运行脚本。如果不是,请填写文件的完整路径,如:if [ -f /pull/path/to/your/file/${i}.mp4 ]; then

您也可以尝试运行:

#!/bin/bash

for files in /full/path/to/your/mp4/files/*
do
    name=$(basename ${files})
    mkvmerge -o /home/ftpuser/movies/Main/out/${name} /home/ftpuser/movies/Movie/test.mp4 \+ /home/ftpuser/movies/addMovie/${name}
done

这里您不需要if个陈述。