2016-12-14 8 views
-2

いくつかのファイルからいくつかのパターンを削除するスクリプトがあります。ディレクトリ内のファイルをいくつか削除する

私はunlinkを試しましたが、何とかうまくいきませんでした。欠けているものがありますか?

$files = glob(PATH_DIR. 
    '_*.txt'); 
foreach($files as $file) { // iterate files 
    if (is_file($file)) { 
     //unlink($file); // delete file 
     $mask = $var. 
     '_*.*'; 
     array_map('unlink', glob($mask)); 
    } 
} 
+0

は、なぜあなたはループ内で ')(' array_mapをやっている再帰的に許可を設定するのに役立ちます?あなたが探しているパターンは '_ *。txt'か' _ *。* 'ですか? '$ var'とは何ですか?表示されたコードでは定義しませんが、 'unlink()'の呼び出しの基礎となる '$ mask'でそれを使用しようとします。 –

答えて

0
@array_map('unlink', glob(PATH_DIR.'_*.txt')); 

_-すべてのパスを印刷し、次にてmanualyトリガーにしようとしていない場合は、ファイルを取得するため

+0

'$ mask'については、何らかのパターンで始まるファイルを削除する必要があります。 – Mann

+0

これは、あなたが/_222.txtのようなものをすべて削除したからであり、dieを使ってrelace globを試してみると、不正なものが表示されます。そうでなければ、アクセス許可の問題 –

+0

エラーを抑止するために '@'これは非常に悪い習慣です。 –

0

使用RecursiveIteratorIteratorのリンクを解除しても、あなたがそれらのファイルを削除するための十分な権限を持って確認してください。どちらの755にフォルダまたは変更許可chownとファイル644

find . -type d -exec chmod 0755 {} $path; 
find . -type f -exec chmod 0644 {} $path; 

これらのコマンドは、Linux上にある場合

$file_obj = get_files_by_path('/var/www/html/wordpress') 

foreach ($file_obj as $Ofiles) { 
    $file_path = $Ofiles->getPathname(); 
    //use your regex here with $file path. if that passed then delete the file 

    unlink($file_path); 
} 

function get_files_obj_by_path($path){ 
      $obj = new RecursiveIteratorIterator(
        new RecursiveDirectoryIterator($source), RecursiveIteratorIterator::SELF_FIRST, RecursiveIteratorIterator::CATCH_GET_CHILD 
       ); 
      return $obj; 
     } 
関連する問題