在linux下的C中如何删除当前目录下以prefix开头的所有tmp文件(不能为文件夹)?

luckyappl 2004-10-22 10:44:59
谢谢!
...全文
1673 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
zgqcool2002 2004-11-02
  • 打赏
  • 举报
回复
请问你是做TAM吗?在大连?
luckyappl 2004-10-26
  • 打赏
  • 举报
回复
解释:

若prefix为a.tmp和ab.tmp,还有一个文件为aa

则只删a.tmp和ab.tmp
不删除文件aa。

怎么改呢?
darkstar21cn 2004-10-26
  • 打赏
  • 举报
回复
NAME
remove - delete a name and possibly the file it refers to

SYNOPSIS
#include <stdio.h>

int remove(const char *pathname);
darkstar21cn 2004-10-26
  • 打赏
  • 举报
回复
#include <unistd.h>
char* arg[4];
arg[0] = new char[3];
strcpy (arg[0], "rm");
arg[1] = new char[4];
strcpy (arg[1], "-f");//不提问直接删除 -r为删除目录如果不用不会删除目录的
arg[2] = new char[256];
//如果是后缀的话
arg[2][0] = '*';
arg[2][1] = '.';
strcat (arg[2], surfix);
/*如果是前缀的话:
strcpy (arg[2], prefix);
strcat (arg[2], '*');
*/
arg[3] = NULL;
execvp ("rm", arg);
luckyappl 2004-10-26
  • 打赏
  • 举报
回复
prefix 为变量,怎么删除呀?
grooving 2004-10-26
  • 打赏
  • 举报
回复
void main()
{
system("rm prefix*.tmp");
}

这个不就是删除扩展名为tmp的文件吗?
luckyappl 2004-10-26
  • 打赏
  • 举报
回复
若扩展名为tmp,能实现么?
柯本 2004-10-26
  • 打赏
  • 举报
回复
不好意思,上面的// remove(ent->d_name); 前的//要去掉
柯本 2004-10-26
  • 打赏
  • 举报
回复
//ANSI C没有支持目录的标准函数,不过linux下的gcc及windows下的bcb都有opendir
//以下程序可删除当前目录下prefix为首的所有文件
//实际上grooving(grooving)的不失为一个很好的方法
#include <dirent.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void deletefile(char *prefix)
{
DIR *dir;
struct dirent *ent;
char *p;

if ((dir = opendir(".")) == NULL)
{
perror("Unable to open . directory");
exit(1);
}
while ((ent = readdir(dir)) != NULL)
{
p = strrchr(ent->d_name, '.');
if (p &&(strcmp(p+1,prefix)==0))
{
// remove(ent->d_name);
printf("%s deleted\n",ent->d_name);
}
}
if (closedir(dir) != 0)
perror("Unable to close directory");
}

main(int argc,char *argv[])
{
if (argc != 2)
{
printf("usage: deletefile prefix\n");
exit(1);
}
deletefile(argv[1]);
exit(0);
}

//实现你的要求:
//delefile tmp
柯本 2004-10-25
  • 打赏
  • 举报
回复
//ANSI C没有支持目录的标准函数,不过linux下的gcc及windows下的bcb都有opendir
//以下程序可删除当前目录下prefix为首的所有文件
//实际上grooving(grooving)的不失为一个很好的方法
#include <dirent.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void deletefile(char *prefix)
{
DIR *dir;
struct dirent *ent;


if ((dir = opendir(".")) == NULL)
{
perror("Unable to open . directory");
exit(1);
}
while ((ent = readdir(dir)) != NULL)
{
if (strncmp(ent->d_name,prefix,strlen(prefix))==0)
{
remove(ent->d_name);
printf("%s deleted\n",ent->d_name);
}
}
if (closedir(dir) != 0)
perror("Unable to close directory");
}

main(int argc,char *argv[])
{
if (argc != 2)
{
printf("usage: deletefile prefix\n");
exit(1);
}
deletefile(argv[1]);
exit(0);
}
luckyappl 2004-10-25
  • 打赏
  • 举报
回复
怎么用标准c语言,删除变量为前缀的文件呀?
举例
void deletefile(char *prefix){
怎样删除以prefix为首的所有文件
}
lynnboy 2004-10-22
  • 打赏
  • 举报
回复
remove()用来删除文件。
sys/里面有用来处理文件系统的.h
具体什么我忘了。
grooving 2004-10-22
  • 打赏
  • 举报
回复
void main()
{
system("rm prefix*.tmp");
}

69,336

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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