Cakephp文件和文件夹类与正则表达式搜索文件

时间:2015-06-24 07:19:37

标签: regex cakephp

我正在创建一些用于删除备份文件的shell。我使用关键字' bkp'来创建原始文件的备份。它可以是文件名中的任何一个,如 [" abc.bkp.ctp"," abc-bkp.ctp",abc_bkp.ctp",&#34 ; bkp_abc.ctp"] 即可。我的意思是任何方式。我希望使用shell删除所有文件。我正在使用Cakephp的文件N文件夹类" http://book.cakephp.org/2.0/en/core-utility-libraries/file-folder.html"。我如何编写正则表达式来搜索这些文件。

我的shell逻辑是什么。

    public function removeBkp() {
        $path = BASE_PATH . DS . APP_DIR . DS;
        $count = 0;

        $this->out("", 2);
        $this->out("-------------------------------------", 1);
        $this->out("Path : " . $path, 1);
        $this->out("FILES DETAILS", 1);
        $this->out("-------------------------------------", 2);
        $dir = new Folder($path);
        // Need to seach bkp files here 
        $defaultFiles = $dir->findRecursive("(bkp)");

        $results = $defaultFiles;
        if ($results == null || empty($results)) {
            $this->out("No file to delete.", 3);
        } else {
            foreach ($results as $file) {
                // unlink($file);
                $this->out("File removed - " . $file, 1);
                $count++;
            }
            $this->out("Total files: " . count($results), 1);
        }
    }

1 个答案:

答案 0 :(得分:1)

您可以将所有文件名与此正则表达式匹配:

([\w._-]*bkp[\S]*?\.ctp)

假设只使用._-来分割文件,您可能需要向该字符类添加更多内容。

此正则表达式还假定文件始终以ctp结尾。

演示:https://regex101.com/r/tB9nM9/1

编辑:如果您希望匹配任何扩展程序,可以使用\w{3}概括扩展程序。如果长度为3,则可以根据需要在此处添加方差,但更具体的通常更好。

([\w._-]*bkp[\S]*\.\w{3})

DEMO:https://regex101.com/r/tB9nM9/2