PHP递规查找删除目录

使用SVN的话会在每个目录下都生成一个.svn的目录(而git只会在根目录下生成)。如果对项目进行清理,手动删除就比较麻烦,就用php写了一个小程序来实现。

直接把代码拷到项目下运行即可删除所有的.svn目录。程序里的两个函数也可提取出来单独使用。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
$subdirs = find_dirs(dirname(__FILE__), '.svn');
foreach ($subdirs as $value) {
delDir($value);
}
echo 'End';
/**
* 递归查找目录
* 找出$dir下所有名为$find的目录,保存到数组中返回
* @param string $dir
* @param string $find
*/
function find_dirs($dir, $find){
static $dirs = array();
if (is_dir($dir)) {
$scans = scandir($dir);
foreach ($scans as $k => $v) {
$realpath = $dir.'\'.$v;
if ($v == '.' || $v == '..'){
continue;
} else{
if (is_dir($realpath) && $v == $find) {
$dirs[] = $dir.'\'.$v;
} elseif (is_dir($realpath)) {
find_dirs($realpath, $find);
}
}
}
}
return $dirs;
}
/**
* 删除目录
* 删除目录及其下所有文件
* @param string $dir
*/
function delDir($dir) {
if (is_dir($dir)) {
$handle = opendir($dir);
while ($sub = readdir($handle)) {
$fullPath = $dir .'\'.$sub;
if ($sub != '.' && $sub != '..') {
chmod($fullPath, 0777);
if (is_dir($fullPath)) {
delDir($fullPath);
} else {
unlink($fullPath);
}
}
}
closedir($handle);
$res = rmdir($dir);
if (!$res) {
echo $dir.' delete failed!
';
}
}
}
坚持原创技术分享,您的支持将鼓励我继续创作!