linux下删除非空文件夹
-
- 帖子: 448
- 注册时间: 2008-07-10 15:08
linux下删除非空文件夹
linux的有删除文件夹的命令rmdir -rf*
但是我想用程序删除文件夹,同样提供了函数rmdir但是她只能删除空文件夹
我想删除非空文件夹,有没有好的想法
但是我想用程序删除文件夹,同样提供了函数rmdir但是她只能删除空文件夹
我想删除非空文件夹,有没有好的想法
- HuntXu
- 帖子: 5776
- 注册时间: 2007-09-29 3:09
- 32idea
- 帖子: 1251
- 注册时间: 2006-12-15 9:32
- 系统: linux
Re: linux下删除非空文件夹
rm -rf ,后面空格跟路径名,慎用
-
- 帖子: 338
- 注册时间: 2008-05-24 1:24
Re: linux下删除非空文件夹
人家问的是系统编程级呢,不是用命令,呵呵
我看了下 rm 的实现,用的应该是一个目录栈
lz 可以参考 coreutils 源代码里面的 rm.c
我看了下 rm 的实现,用的应该是一个目录栈
lz 可以参考 coreutils 源代码里面的 rm.c
如果努力的目的是为了超越他人,那么我们永远成功不了
大道是平的,我们该做的是让自己快乐,同时带给他人快乐
好好涵养自己的性格
才华是刀刃,辛苦是磨刀石
多食果蔬,健康长寿;少吃不吃鱼肉,珍爱它类生命,远离自身疾病
大道是平的,我们该做的是让自己快乐,同时带给他人快乐
好好涵养自己的性格
才华是刀刃,辛苦是磨刀石
多食果蔬,健康长寿;少吃不吃鱼肉,珍爱它类生命,远离自身疾病
-
- 帖子: 338
- 注册时间: 2008-05-24 1:24
Re: linux下删除非空文件夹
我的一个简单思路:
假设需要删除的目录为 a
1. 广度优先遍历将该目录开始的所有目录压栈
2. 对栈顶的目录,unlink 掉其所有记录(除 "." 和 "..")
3. rmdir 栈顶的目录
4. 出栈
5. 栈非空,则跳到 2;否则结束
假设需要删除的目录为 a
1. 广度优先遍历将该目录开始的所有目录压栈
2. 对栈顶的目录,unlink 掉其所有记录(除 "." 和 "..")
3. rmdir 栈顶的目录
4. 出栈
5. 栈非空,则跳到 2;否则结束
如果努力的目的是为了超越他人,那么我们永远成功不了
大道是平的,我们该做的是让自己快乐,同时带给他人快乐
好好涵养自己的性格
才华是刀刃,辛苦是磨刀石
多食果蔬,健康长寿;少吃不吃鱼肉,珍爱它类生命,远离自身疾病
大道是平的,我们该做的是让自己快乐,同时带给他人快乐
好好涵养自己的性格
才华是刀刃,辛苦是磨刀石
多食果蔬,健康长寿;少吃不吃鱼肉,珍爱它类生命,远离自身疾病
- xhy
- 帖子: 3916
- 注册时间: 2005-12-28 1:16
- 系统: Ubuntu 12.10 X64
- 来自: 火星
Re: linux下删除非空文件夹
建议参考busybox的源码
伪代码如下:
出错处理和.以及..目录的排除自己加
伪代码如下:
出错处理和.以及..目录的排除自己加
代码: 全选
rm_re(path)
{
if (is_dir(path)) {
dp = opendir(path);
while ( (d=readdir(path)) != NULL ) {
new_path = path + dp->d_name;
rm_re(new_path);
rmdir(new_path);
}
} else {
unlink(path);
}
}
目前负债150多万
-
- 帖子: 338
- 注册时间: 2008-05-24 1:24
Re: linux下删除非空文件夹
xhy 兄递归的方法比较直观
如果努力的目的是为了超越他人,那么我们永远成功不了
大道是平的,我们该做的是让自己快乐,同时带给他人快乐
好好涵养自己的性格
才华是刀刃,辛苦是磨刀石
多食果蔬,健康长寿;少吃不吃鱼肉,珍爱它类生命,远离自身疾病
大道是平的,我们该做的是让自己快乐,同时带给他人快乐
好好涵养自己的性格
才华是刀刃,辛苦是磨刀石
多食果蔬,健康长寿;少吃不吃鱼肉,珍爱它类生命,远离自身疾病
-
- 帖子: 448
- 注册时间: 2008-07-10 15:08
Re: linux下删除非空文件夹
#include<sys/types.h>
#include<sys/stat.h>
#include<unistd.h>
#include<stdio.h>
#include<stdlib.h>
int main(void)
{
if(rmdir("./ds/ee")!=0)
printf("删除目录失败\n");
return 0;
}
我的删除撒总是失败?
还有哥几个说的有道理,但是我不知道,你们对"非空"是如何理解的,假若在我的./ds/ee下没有文件夹了但是有一个文件撒办?
qq上有位仁兄说用system函数实现挺好,system("rm -rf ./ds/ee")
这样也是可以的system("rm -rf ./ds/ee/weihua.c");
c语言中有一个库函数remove似乎感觉挺好,是文件的话会调用unlink(),是目录的话会调用rmdir()函数。还没有整明白,
待续
#include<sys/stat.h>
#include<unistd.h>
#include<stdio.h>
#include<stdlib.h>
int main(void)
{
if(rmdir("./ds/ee")!=0)
printf("删除目录失败\n");
return 0;
}
我的删除撒总是失败?
还有哥几个说的有道理,但是我不知道,你们对"非空"是如何理解的,假若在我的./ds/ee下没有文件夹了但是有一个文件撒办?
qq上有位仁兄说用system函数实现挺好,system("rm -rf ./ds/ee")
这样也是可以的system("rm -rf ./ds/ee/weihua.c");
c语言中有一个库函数remove似乎感觉挺好,是文件的话会调用unlink(),是目录的话会调用rmdir()函数。还没有整明白,
待续
-
- 帖子: 338
- 注册时间: 2008-05-24 1:24
Re: linux下删除非空文件夹
rmdir 调用只能删除空目录
用 system 不叫自己写吧,呵呵,而且和原生的不一样吧,很多东西系统不提供的,system 也没用
非空就是 目录里面含有除 "." ".." 之外的记录
你可以看看系统编程里讲文件和目录的部分呀
用 system 不叫自己写吧,呵呵,而且和原生的不一样吧,很多东西系统不提供的,system 也没用
非空就是 目录里面含有除 "." ".." 之外的记录
你可以看看系统编程里讲文件和目录的部分呀
如果努力的目的是为了超越他人,那么我们永远成功不了
大道是平的,我们该做的是让自己快乐,同时带给他人快乐
好好涵养自己的性格
才华是刀刃,辛苦是磨刀石
多食果蔬,健康长寿;少吃不吃鱼肉,珍爱它类生命,远离自身疾病
大道是平的,我们该做的是让自己快乐,同时带给他人快乐
好好涵养自己的性格
才华是刀刃,辛苦是磨刀石
多食果蔬,健康长寿;少吃不吃鱼肉,珍爱它类生命,远离自身疾病
-
- 帖子: 448
- 注册时间: 2008-07-10 15:08
Re: linux下删除非空文件夹
好的,我写的好像有点不地道,是吧?
用 system 不叫自己写吧,呵呵,而且和原生的不一样吧,很多东西系统不提供的,system 也没用
这话我有点不是很懂
1." 不叫自己写的吧"你是说我调用用了系统函数不是自己写的,不是自己的想法?
2."不是原生的",是我的删除路径的函数不是原生的还是system函数用的不是原生的?
3.system也没用哪?
删除路径跟删除文件夹不一样吗?若是空的话,直接删除,若不是空的话,将它清空再删除,
我再想想
用 system 不叫自己写吧,呵呵,而且和原生的不一样吧,很多东西系统不提供的,system 也没用
这话我有点不是很懂
1." 不叫自己写的吧"你是说我调用用了系统函数不是自己写的,不是自己的想法?
2."不是原生的",是我的删除路径的函数不是原生的还是system函数用的不是原生的?
3.system也没用哪?
删除路径跟删除文件夹不一样吗?若是空的话,直接删除,若不是空的话,将它清空再删除,
我再想想
-
- 帖子: 1
- 注册时间: 2008-12-12 13:57
Re: linux下删除非空文件夹
rm -rf 文件名 man rm 一定行!
- yinhang8848
- 帖子: 97
- 注册时间: 2009-01-16 17:03
- 联系:
Re: linux下删除非空文件夹
上面是C程序代码吗?
- lerosua
- 论坛版主
- 帖子: 8455
- 注册时间: 2007-11-29 9:41
- 联系:
Re: linux下删除非空文件夹
好多人没看明白楼主的问题就回答了
-
- 帖子: 2841
- 注册时间: 2006-09-11 22:47
Re: linux下删除非空文件夹
C程序只能通过写一个递归函数实现。weihua2008 写了:linux的有删除文件夹的命令rmdir -rf*
但是我想用程序删除文件夹,同样提供了函数rmdir但是她只能删除空文件夹
我想删除非空文件夹,有没有好的想法
有很多其他的语言中有现成的实现。
- wuhezhong
- 帖子: 111
- 注册时间: 2010-04-03 18:10
Re: linux下删除非空文件夹
偶认为正解,还是多用man和--help好处多多阿,原本用rmdir -p 递减删除来着,后来恼了,才知道非空目录的删除可以用rm -rf 删除,原来还以为rm只能删除文件呢。命令真的很强大阿。codeprince 写了:rm -rf 文件名 man rm 一定行!
我问佛:为何不给所有女子羞花闭月的容颜?
佛曰:那只是昙花的一现,用来蒙蔽世俗的眼
—————---/´ ¯/)
—————--/—-/
—————-/—-/
———--/´¯/'--'/´¯`•_
———-/'/--/—-/—--/¨¯\
——--('(———- ¯~/'--')
———\————-'—--/ 各类计算机在线书籍下载和在线浏览站点------->ppurl.com ------>首页下方有标签!
———-'\'————_-•´
————\———--(
佛曰:那只是昙花的一现,用来蒙蔽世俗的眼
—————---/´ ¯/)
—————--/—-/
—————-/—-/
———--/´¯/'--'/´¯`•_
———-/'/--/—-/—--/¨¯\
——--('(———- ¯~/'--')
———\————-'—--/ 各类计算机在线书籍下载和在线浏览站点------->ppurl.com ------>首页下方有标签!
———-'\'————_-•´
————\———--(