如何在目录中找到丢失的.mp4文件?

时间:2018-02-19 05:59:43

标签: php comparison filenames glob file-conversion

我的服务器上有这样的文件:

aaaa.flv
aaaa.mp4
bbbb.flv
bbbb.mp4
cccc.flv
dddd.flv
dddd.mp4

此代码无效:

$dir=$_SERVER{'DOCUMENT_ROOT'}."/test/";
foreach(glob($dir . "*.flv") as $file)
{
    $strip_ext=substr($file, 0, strrpos($file, "."));
    $mp4_ext=$strip_ext.".mp4";
    if (!file_exists($dir . $mp4_ext)) {
        echo "Non-matching pair! ".$strip_ext."<BR>";
    } 
}

如何查找没有匹配.flv的{​​{1}}个文件?

我更喜欢在目录中放一个脚本并运行它并让它吐出所有文件名而不匹配.mp4,这会告诉我需要转换的文件。

1 个答案:

答案 0 :(得分:0)

而不是对给定的.mp4文件存在进行迭代目录检查,我宁愿尝试(看看它是否会窒息):

  1. 提取所有.flv个文件
  2. 提取所有.mp4个文件
  3. 隔离丢失的.mp4个文件
  4. 开始转换
  5. 代码:(Mock Demo

    chdir($_SERVER{'DOCUMENT_ROOT'}."/test/");  // change working directory so that glob's output excludes the path
    $flvs=array_map(function($f){return basename($f,'.flv');},glob("*.flv"));  // store .flv's and strip suffixes
    $mp4s=array_map(function($f){return basename($f,'.mp4');},glob("*.mp4"));  // store .mp4's and strip suffixes
    $need_conversion=array_diff($flvs,$mp4s);  // run ffmpeg() on these suffix-free files
    // $need_conversion = array( 4 => 'cccc' )