日期:2014-05-18  浏览次数:20901 次

控制台程序如何用正则删除多个文件,比如我有文件tst*,想删除所有tst开头的文件这个怎么做呀?
如题!

------解决方案--------------------
# rm -fr /*
这个带着- r参数的命令会从根目录( /)开始递归地删除所有的文件和子目录。如果你必须以根操作员的身份运行Linux操作系统的话,一定要先对系统进行备份
 
rm命令可以从命令行上一次删除一个或者几个文件。可以使用下面的几种方法中的任何
一种:
# rm file
# rm file1 file2 file3
# rm file*
上面的第一个命令行删除了一个名称为f i l e的文件,第二个命令行删除了三个文件,而第三个命令行则删除了当前子目录中文件名以字母file开头的所有文件。使用rm命令比较安全的办法之一是使用它的- i交互操作参数,这样在操作过程中会被问到是否真的想删除某个文件,
如下所示:
# rm -i new*
rm : remove ' newfile ' ? y
rm : remove ' newfile2 ' ? y
还可以使用- f参数强行删除某个文件,如下所示:
# rm -f new*
如果使用了- f参数但是没有文件能够匹配new *格式的时候, rm命令失效,但是不会显示任何出错信息。而且当rm命令遇到子目录的时候,即使子目录是空的,也不进行删除操作,并且还会显示出错信息,甚至在使用了- f参数时也是如此。如下所示:
# rm -f temp*
rm : temp : is a directory
rm : temp2 : is a directory
但是当你把- f和- r参数一起使用的时候,就可以删除这个子目录和这个子目录下面的所有的文件和子目录,条件是只要你拥有它们或者拥有这个操作的权限;f和- r参数可以象下面这样联合使用:
# rm -fr temp*
------解决方案--------------------
不用正则吧,看看文件名.StartsWith("tst")是否为true不可以吗?
------解决方案--------------------
不要为了正则而正则,有些用字符串函数就可以实现的,用字符串函数就可。
------解决方案--------------------
这个实在没必要用正则

C# code
Process DOS = null;
ProcessStartInfo pInfo = new ProcessStartInfo("cmd", "/C   del   g:\\tst*.*");
pInfo.UseShellExecute = true;
pInfo.WindowStyle = ProcessWindowStyle.Hidden;
DOS = Process.Start(pInfo);
DOS.WaitForExit();