- ベストアンサー
再帰的な関数処理でディレクトリ内の.svnディレクトリを削除する方法
- 以下のPHPコードを使用して、再帰的な関数処理で指定されたディレクトリ内のすべての.svnディレクトリを削除することができます。
- コマンドラインからPHPを実行し、ディレクトリ内のすべての.svnディレクトリを再帰的に削除します。
- コード内のDirectoryIteratorを使用して、ディレクトリ内のすべてのファイルとディレクトリにアクセスし、.svnディレクトリが見つかった場合に削除します。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
再帰的に処理する場合は、自分自身(function)を再帰的に呼び出すことで、非常にシンプルになります。 $sourceDir = '/var/www/html'; // 対象フォルダ(例) $targetDir = '.svn'; // 処理するフォルダ名 procDir( $sourceDir, $targetDir ); function procDir( $sourceDir, $targetDir ) { // ディレクトリを開く if ( $handle = opendir( $sourceDir ) ) { while ( false !== ( $file = readdir( $handle ) ) ) { // エラーチェック if ( $file == '.' || $file == '..' ) { continue; } $path = $sourceDir . '/' . $file; if ( is_dir( $path ) ) { // 対象フォルダの処理 if ( $file == $targetDir ) { /** * [ $path ] にターゲットのフルパスが格納される。 * 削除を実行する前に、echo 等で書き出して確認することを * お勧めします。下記例だと、シェルコマンドの rm を使用して * いますが、unlink + rmdir の組み合わせの方がPHPっぽい * かもしれません。 * */ //system( 'rm -dfvr ' . $path ); //echo $path . "\n"; continue; } // 再帰的に処理 procDir( $path, $targetDir ); } } closedir( $handle ); } }