2

对不起这个问题,我想答案很简单,但是我进行了搜索,但没有找到任何答案。

我写了以下内容:

while read p                        # reads in each line of the text
do                                  # file- folder_list.txt each iteration.
    echo "$p"                       # print out current line
    if [ -f  $p/frame_number1.jpg ] # checks if the image exists in the specific folder
    then
        echo "$p"                   #prints specific folder name
        sleep 1                     #pause for 1 second
        ffmpeg -f image2 -r 10 -i $p/frame_number%01d.jpg -r 30 $p/out.mp4  #create video
     fi                             # end if statement
done <folder_list.txt               #end of while loop

该脚本应该读取包含文件夹树结构的文本文件,然后检查文件夹是否包含指定的 JPEG,如果包含,则代码应从指定文件夹中包含的图像创建视频。

然而,似乎正在发生的是脚本跳过了肯定包含图像的整个文件夹。我想知道 while 循环是否在创建视频时继续迭代,或者是否发生了其他事情?

任何帮助将不胜感激。

提前谢谢了

劳伦斯

4

1 回答 1

0

这可能是因为某些文件夹包含空格或其他奇怪的字符。

试试这个(不适用于所有情况,但适用于大多数情况):

while read p            # reads in each line of the text file- folder_list.txt
do                      #each iteration
   echo "$p"               #print out current line
   if [  -f   "${p}/frame_number1.jpg"  ] #checks wether the image exists in the specific folder
   then echo "$p"      #printsout specific folder name
        sleep 1                 #pause for 1 second
        ffmpeg -f image2 -r 10 -i "${p}/frame_number%01d.jpg" -r 30 "${p}/out.mp4"  #create video
   fi                  # end if statement
done <folder_list.txt   #end of while loop

我只是在涉及 "$p" 的参数周围添加了引号,这样如果它包含空格(和其他东西),它就不会分成几个参数,从而破坏命令

如果这不起作用,请准确告诉我们一些正常的目录和不正常的目录:

ls -ald  /some/ok/dir     /some/NOTOK/dir #will show which directories belong to who
id  #will tell us which user you are using, so we can compare to the previous and find out why you can't access some
于 2013-06-17T15:12:27.140 回答