怎么同时删除/改名某个目录下的指定名字的文件?(可能有多级目录)进者有分

xqi8 2004-05-06 11:51:36
比如:
d:
--test
----test
--------a.txt
----a.txt
----test1
----b.txt

上面的目录可能表达的很清楚
意思也就是:
都一个目录下有过个子目录,已经多个文件。
在各个子目录里面又有过个子目录,已经多个文件。
不同目录下的文件可以同名
不如在不同目录下有同名的文件如:a.txt

现在想把某个目录下的全部(包括子目录里面的)a.txt文件同时删除,或者修改。
不知道怎么实现。
请大家帮忙。
(个人之见,应该用递归,可我每有写出来)

...全文
100 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
sinolge 2004-08-19
  • 打赏
  • 举报
回复
mark
hackfan 2004-05-06
  • 打赏
  • 举报
回复
<?
function RenameFile($dir,$filename,$newname)
{
$dh = opendir($dir);
while($file=readdir($dh)){
if($file != "." && $file != "..")
{
if(is_dir("$dir/$file"))
{
DelFile("$dir/$file",$filename);
}
else if($file == $filename)
{
rename("$dir/$file","$dir/$newname");
echo "$dir/$file has been changed name to $dir/$newname.<br>\n";
}

}
}
closedir($dh);
}

RenameFile("f:/www/test","a.txt","b.txt");

?>
hackfan 2004-05-06
  • 打赏
  • 举报
回复
<?
function DelFile($dir,$filename)
{
$dh = opendir($dir);
while($file=readdir($dh)){
if($file != "." && $file != "..")
{
if(is_dir("$dir/$file"))
{
DelFile("$dir/$file",$filename);
}
else if($file == $filename)
{
unlink("$dir/$file");
echo "$dir/$file has been deleted.<br>\n";
}

}
}
closedir($dh);
}

DelFile("f:/www/test","a.txt");

?>

结果:

f:/www/test/a.txt has been deleted.
f:/www/test/test/a.txt has been deleted.
f:/www/test/test/afd/a.txt has been deleted.
f:/www/test/test/afd/asdf/a.txt has been deleted.
f:/www/test/test/dada/a.txt has been deleted.
f:/www/test/复件 test/a.txt has been deleted.
f:/www/test/复件 test/afd/a.txt has been deleted.
f:/www/test/复件 test/afd/asdf/a.txt has been deleted.
f:/www/test/复件 test/dada/a.txt has been deleted.
xuzuning 2004-05-06
  • 打赏
  • 举报
回复
function delete_r($path,$filename) {
$d = dir($path);
while($f = $d->read()) {
if($f == $filename)
unlink("$d->/$f");
if(is_dir("$d->/$f"))
delete_r("$d->/$f",$filename);
}
$d->close();
}

xqi8 2004-05-06
  • 打赏
  • 举报
回复
要在指定的目录下删除指定文件名的文件(该文件名的文件有多个,分布在各个子目录下)
所以,我想参数应该是要传入两个:
1.文件主目录名(比如:d:\test)
2.要修改或者删除的文件名字(比如:a.txt)

这样要删除或者修改的就是d:test下的所有a.txt文件(包括d:\test的所有子目录下的所有a.txt文件)

谢谢
chinaworker 2004-05-06
  • 打赏
  • 举报
回复
function delDir($dir)
{
$dirhandle=opendir($dir);
while($file_name=readdir($dirhandle))
{
if ($file_name!="." && $file_name!="..")
{
if (is_dir("$dir/$file_name"))
{
del_dir($dir."/".$file_name);
rmdir("$dir/$file_name");
}
else unlink("$dir/$file_name");
}
}
closedir($dirhandle);
rmdir($dir);
if(!is_dir($dir))
return 1;
else
return 0;
}
hackfan 2004-05-06
  • 打赏
  • 举报
回复
<?
function RenameFile($dir,$filename,$newname)
{
$dh = opendir($dir);
while($file=readdir($dh)){
if($file != "." && $file != "..")
{
if(is_dir("$dir/$file"))
{
RenameFile("$dir/$file",$filename,$newname);
}
else if($file == $filename)
{
rename("$dir/$file","$dir/$newname");
echo "$dir/$file has been changed name to $dir/$newname.<br>\n";
}

}
}
closedir($dh);
}

RenameFile("f:/www/test","a.txt","b.txt");

?>

刚才漏改了一个地方
mistjin 2004-05-06
  • 打赏
  • 举报
回复
function rename_file ( $path, $oldName, $newName ) {

if ($handle = @opendir($path)) {
while(false !== ($file = @readdir($handle))) {
if (@filetype($path.$file) == "file") {
if ($file == $oldName)
rename($path.$oldName, $path.$newName);
} else {
if (@filetype($path.$file) == "dir" && $file != "." && $file != "..") {
rename_file ($path.$file.'/', $oldName, $newName);
}
}
}
}
}

rename_file('C:/Apache/Apache2/htdocs/test/', 'aa.txt', 'bb.txt')

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧