PHP调用par2 递归的处理目录并分离文件

Posted 小六

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP调用par2 递归的处理目录并分离文件相关的知识,希望对你有一定的参考价值。

#!/usr/bin/php
<?php

function 转义引号($str)
{
    return str_replace("‘","‘",$str);
}

function dir_list($dir_path = ‘‘) 
{
    if(!is_dir($dir_path)) return false;

    $dirs = opendir($dir_path);
    if($dirs) 
    {    
        while(($file = readdir($dirs)) !== false) 
        {
            if(!in_array($file,[‘.‘,‘..‘,‘hash‘])) 
            {
                //目录
                if(is_dir($dir_path.‘/‘.$file)) 
                {
                    //在hash目录下建立对应目录结构,用来存储最终的par2文件
                    $hash目录对应路径 = HASH路径 .mb_substr($dir_path.‘/‘.$file,preg_match_all(‘/(.)/‘,原始路径));
                    @mkdir($hash目录对应路径,0777,true);

                    //进入目录 递归    
                    dir_list($dir_path . ‘/‘ .$file);
                }else 
                {
                //文件
                    $file = 转义引号($file);
                    $原始路径 = 转义引号(原始路径);
                    $hash目录对应路径 = HASH路径 .mb_substr($dir_path,preg_match_all(‘/(.)/‘,原始路径));
                    $command = "cd $‘".转义引号($dir_path). "‘ && par2 c -r3 -n1 $‘{$file}.par2‘ $‘{$file}‘ ";
                    file_put_contents(HASH路径.‘/par2.sh‘, $command.PHP_EOL,FILE_APPEND);
                    
                }
            }
        }
        //移动par2文件
        file_put_contents(HASH路径.‘/par2.sh‘,"cd $‘".转义引号($dir_path)."‘ && find . -maxdepth 1 -name "*.par2" -exec mv {} $‘".转义引号(str_replace(原始路径,HASH路径,$dir_path))."‘ ;".PHP_EOL,FILE_APPEND);
        closedir($dirs);
    }
}

exec(‘pwd‘,$当前路径,$re);
if($re == 0)
{
    $当前路径 = $当前路径[0];
    define("原始路径",$当前路径);
    define("HASH路径", $当前路径.‘/hash‘);
    if(!file_exists(HASH路径)){
        @mkdir(HASH路径,0777,true);
    }
    unlink(HASH路径.‘/par2.sh‘);
    //强制使用bash
    file_put_contents(HASH路径.‘/par2.sh‘, ‘#!/usr/bin/env bash‘.PHP_EOL);
    dir_list($当前路径);
    chmod(HASH路径.‘/par2.sh‘,0755);
    exec(HASH路径.‘/par2.sh‘,$r);
    var_dump(implode(PHP_EOL,$r));
}else{
    exit;
}

 

具体情况以后再补

以上是关于PHP调用par2 递归的处理目录并分离文件的主要内容,如果未能解决你的问题,请参考以下文章

使用 PHP 递归搜索目录中的文件并更改值

php学习笔记:利用递归实现删除文件目录

(实用篇)PHP不用递归遍历目录下所有文件的代码

PHP之递归删除

php之递归调用,递归创建目录

PHP 文件夹操作「复制删除查看大小」迭代实现