返回列表 回复 发帖

删除Unix上目录文件过多问题

作者:小歪歪
email: annysun@163.net
日期:9/3/2001 3:03:59 PM

    大家有没有碰到过unix上,一个目录文件太多,无法删除的现象,我为大家写了个perl的程序删除!
cat > del.pl
  1. #!/usr/bin/perl
  2. $file1=$ARGV[0];
  3. @tests=(1,2,3,4,5,6,7,8,9,';A';,';B';,';C';,';D';,';E';,';F';,';G';,';H';,';I';,';G';,';K';,';L';,';M';,';N';,';O';,';P';,';Q';,';R';,';S';,';T';,';U';,';V';,';W';,';X';,';Y';,';Z';);
  4. foreach  $test(@tests) {
  5. $file=$file1.$test;
  6. @chars=(0,1,2,3,4,5,6,7,8,9,';A';,';B';,';C';,';D';);
  7. foreach $char(@chars) {
  8. `rm $file$char*`;
  9. }
  10. `rm $file*`;
  11. }
  12. `rm $file1*`;
复制代码
——————以下内容由Cnangel2005年08月25日 07:15pm时添加———————

个人感觉是一种比较差的程序!
请看下面两种语言写的程序:
PERL:
  1. #!/usr/bin/perl
  2. ################################################################################
  3. #               NT/UNIX/LINUX/BSD各系统死锁文件超级删除工具
  4. #
  5. #                         荣誉出品:94Cool.Net
  6. #
  7. #                                                                   作者:BigJim
  8. #                                                                     2002/09/25
  9. ################################################################################
  10. #读取提交参数部分
  11. $user="cnangel";  #可以写一个管理会员的sub程序,实现多用户操作
  12. $password="自己的密码";
  13. if ($ENV{';REQUEST_METHOD';} eq "POST") {
  14.   read(STDIN, $buffer, $ENV{';CONTENT_LENGTH';});
  15. }
  16. else {
  17.   $buffer = $ENV{';QUERY_STRING';};
  18. }
  19. @pairs = split(/&/, $buffer);
  20. foreach $pair (@pairs) {
  21.    ($name, $value) = split(/=/, $pair);
  22.    $value =~ tr/+/ /;
  23.    $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
  24.    &#36;value =~ s/<!--(.|\n)*-->//g;
  25.    &#36;value =~ s/\t//g;
  26.    &#36;value =~ s/>/>/g;
  27.    &#36;value =~ s/</</g;
  28.    &#36;FORM{&#36;name} = &#36;value;
  29. }
  30. &#36;action     = &#36;FORM{';action';};
  31. &#36;u = &#36;FORM{';u';};
  32. &#36;pass = &#36;FORM{';pass';};
  33. &#36;u = &clean(&#36;u);
  34. &#36;pass = &clean(&#36;pass);
  35. if((!&#36;action)||(&#36;action eq "login")){&godown;}
  36. if(&#36;action eq "del"){&main;}
  37. sub godown{
  38. if((&#36;u eq &#36;user)&&(&#36;pass eq &#36;password)) {
  39. &main;
  40. }else{
  41. &login;
  42. }
  43. }
  44. sub main{
  45. &#36;|=1;
  46. if (&#36;ENV{';REQUEST_METHOD';} eq "POST")
  47. {
  48. read(STDIN, &#36;buffer, &#36;ENV{';CONTENT_LENGTH';});
  49. }
  50. else
  51. {
  52. &#36;buffer = &#36;ENV{';QUERY_STRING';};
  53. }
  54. @pairs = split(/&/, &#36;buffer);
  55. foreach (@pairs)
  56. {
  57. (&#36;name, &#36;value) = split(/=/, &#36;_);
  58. &#36;value =~ tr/+/ /;
  59. &#36;value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex(&#36;1))/eg;
  60. &#36;value =~ s/<!--(.|\n)*-->//g;
  61. &#36;value =~ s/\t/--/g;
  62. &#36;value =~ s/>/>/g;
  63. &#36;value =~ s/</</g;
  64. &#36;FORM{&#36;name} = &#36;value;
  65. }
  66. print "Content-Type: text/html\n\n";&#35;输出HTTP头
  67. &#35;如果提交了删除对象,则删除对象,如果没有,则显示主程序界面
  68. if (defined(&#36;FORM{';deltarget';}))
  69. {
  70. my &#36;deltarget = &#36;FORM{';deltarget';};
  71. &#36;deltarget =~ s/[\/\\]*&#36;//o;
  72. &#36;deltarget =~ s/\\/\//g;
  73. if (&del(&#36;deltarget))&#35;删除成功
  74. {
  75. print qq~
  76. <html><title>删除成功!</title>
  77. <head><meta http-equiv="Content-Type" Content="text/html; charset=gb2312"></head>
  78. <body><p>删除目标文件(夹)成功!</p><p><a href="javascript:history.go(-1);">返回上一页</a></p></body>
  79. </html>~;
  80. }
  81. else&#35;删除失败
  82. {
  83. print qq~
  84. <html><title>删除失败!</title>
  85. <head><meta http-equiv="Content-Type" Content="text/html; charset=gb2312"></head>
  86. <body><p>删除目标文件(夹)失败!</p><p><font color=red>可能原因:目标文件(夹)不存在或者对于目标文件夹或者里面的一些文件没有权限删除!</font></p><p><a href="javascript:history.go(-1);">返回上一页</a></p></body>
  87. </html>~;
  88. }
  89. }
  90. else
  91. {
  92. &display;
  93. }
  94. exit;
  95. }
  96. sub getmypath&#35;获取程序所在的绝对路径&#36;mydir和程序名称&#36;thisprog的函数
  97. {
  98. if (&#36;ENV{';SCRIPT_FILENAME';})
  99. {
  100. &#36;mydir = substr(&#36;ENV{';SCRIPT_FILENAME';}, 0, rindex(&#36;ENV{';SCRIPT_FILENAME';}, "/"));
  101. }
  102. else
  103. {
  104. &#36;mydir = substr(&#36;ENV{';PATH_TRANSLATED';}, 0, rindex(&#36;ENV{';PATH_TRANSLATED';}, "\\"));
  105. &#36;mydir=~ s/\\/\//g;
  106. }
  107. &#36;thisprog = substr(&#36;ENV{';SCRIPT_NAME';}, rindex(&#36;ENV{';SCRIPT_NAME';}, "/") + 1, length(&#36;ENV{';SCRIPT_NAME';}));
  108. return;
  109. }
  110. sub del&#35;删除一个目录或者是文件的函数,调用参数为文件或者是目录名
  111. {
  112. my &#36;deltarget = shift;
  113. return 1 if (unlink(&#36;deltarget));
  114. return 0 unless (opendir(DIRS, &#36;deltarget));
  115. my @dirlist = readdir(DIRS);
  116. closedir(DIRS);
  117. my &#36;delstatus = 1;
  118. foreach (@dirlist)
  119. {
  120. next if (&#36;_ eq "." || &#36;_ eq "..");
  121. &#36;delstatus = 0 unless (&del(&#36;deltarget . "/" . &#36;_));
  122. }
  123. return 0 unless(&#36;delstatus);
  124. return 0 unless(rmdir(&#36;deltarget));
  125. return 1;
  126. }
  127. sub display&#35;显示本死锁文件删除程序的主界面
  128. {
  129. &getmypath;
  130. print qq~<!--Powered By 94Cool.Net-->
  131. <html><title>NT/UNIX/LINUX/BSD各系统死锁文件超级删除工具</title>
  132. <head>
  133. <meta http-equiv="Content-Type" Content="text/html; charset=gb2312">
  134. <style type="text/css">
  135. .title{font-family: 宋体; font-size: 15px; line-height: 130%; color: &#35;9fc607; filter: glow(color=&#35;333333, strength=1); position: relative; width: 100%}
  136. .cont1{font-family: 宋体; font-size: 12px; line-height: 130%; color: &#35;ff0000}
  137. .cont2{font-family: 宋体; font-size: 12px; line-height: 130%; color: &#35;000000}
  138. .copy{font-family: 黑体; font-size: 15px; line-height: 130%}
  139. </style>
  140. <script language="JavaScript">
  141. function go1()
  142. {
  143. if (window.event.keyCode == 13)
  144. return confirm(';你确认要将服务器上的 "'; + document.FORM.deltarget.value + ';" 目录完全删除么?';);
  145. else
  146. return true;
  147. }
  148. function go2()
  149. {
  150. return confirm(';你确认要将服务器上的 "'; + document.FORM.deltarget.value + ';" 目录完全删除么?';);
  151. }
  152. </script>
  153. </head>
  154. <body>
  155. <p align=center class=title>NT/UNIX/LINUX/BSD各系统死锁文件超级删除工具</p>
  156. <form name=FORM action=&#36;thisprog method=POST>
  157. <input type=hidden name=action value=del>
  158. <p class=cont1>需要删除的目录或者文件的绝对路径:</p>
  159. <p class=cont1><input name=deltarget type=text size=64 OnKeyDown="return go1();">  <input type=submit value=删除(请慎用) OnClick="return go2();"></p>
  160. </form>
  161. <p class=cont1>请在上面填写你要删除的目录在主机上的绝对路径,如果是UNIX/LINUX/BSD主机直接填相对路径也可以!请小心使用,删除后,文件夹和文件夹中的文件将全数被删除掉!如果目录下面有深层路径也不必担心要手动一步步来做,程序会帮你全部删除:)</p>
  162. <p class=cont1>NT例子:f:/www/cgi-bin/bbs/data</p>
  163. <p class=cont1>UNIX例子:user/home/cgi-bin/bbs/data</p>
  164. <p class=cont1>UNIX例子(相对路径):bbs/data</p>
  165. <p class=cont2>当前CGI程序所在的绝对路径:&#36;mydir</p>
  166. <p align=center class=copy>&copy;荣誉出品:<b><font color=5599ff>94Cool</font>.<font color=ff9955>Net</font></b></p>
  167. </body>
  168. </html>
  169. ~;
  170. return;
  171. }
  172. sub login{
  173. print "Content-Type: text/html\n\n";&#35;输出HTTP头
  174. print qq~<html>
  175. <head>
  176. <title>用户登陆界面</title>
  177. <meta http-equiv=';content-type'; content=';text/html; charset=gb2312';>
  178. <LINK href=';http://www.gsfchina.org/css/style.css'; type=text/css rel=stylesheet>
  179. </head>
  180. <body background="../image/bg19.jpg">
  181. <TABLE cellSpacing=0 cellPadding=0 width=770 align=center border=0>
  182. <tr><td> </td></tr>
  183. <tr><td> </td></tr>
  184. <tr><td> </td></tr><tr><td class=3dfontA align=center>用户登陆</td></tr>
  185. <form name =login action=sdel.cgi method=POST>
  186. <input type=hidden name=action value=login>
  187. <tr><td align=center>用户名:<input type=text size=12 name=u></td></tr>
  188. <tr><td align=center>密 码:<input type=password size=12 name=pass></td></tr>
  189. <tr><td align=center><input type=submit value=" 登 陆 " style="border-left: 1px dotted &#35;ff0000; border-right: 1px dotted &#35;ff0000; border-top: 1px dotted &#35;ff0000; border-bottom:1px dotted &#35;ff0000;background-color: &#35;&#35;e1e9ff">  <input type=reset value=" 重 来 " style="border-left: 1px dotted &#35;ff0000; border-right: 1px dotted &#35;ff0000; border-top: 1px dotted &#35;ff0000; border-bottom:1px dotted &#35;ff0000;background-color: &#35;&#35;e1e9ff"></td></tr>
  190. <tr><td> </td></tr>
  191. <tr><td class=3dfontC align=center> 本系统在完善当中</td></tr>
  192. </form></table>
  193. </body></html>~;
  194. exit;
  195. }
  196. sub clean {
  197. my &#36;string = shift;
  198. return ';'; unless (defined &#36;string);
  199. &#36;string =~ s|\t| |g;
  200. &#36;string =~ s|&|&|g;
  201. &#36;string =~ s|<!--|&#60;&#33;--|g;
  202. &#36;string =~ s|-->|--&#62;|g;
  203. &#36;string =~ s|<script|&#60;script|ig;
  204. &#36;string =~ s|>|>|g;
  205. &#36;string =~ s|<|<|g;
  206. &#36;string =~ s|"|"|g;
  207. &#36;string =~ s!^\s+!!;
  208. &#36;string =~ s!\s+&#36;!!;
  209. &#36;string =~ s|  |  |g;
  210. &#36;string =~ s|\n|<br>|g;
  211. &#36;string =~ s|\r||g;
  212. &#36;string =~ s|\_\_(.+?)\_\_||g;
  213. return &#36;string;
  214. }
复制代码
PHP程序:
  1. <?php
  2. &#36;password = "isphp" ;// 管理密码,运行时会要求输入,一定要修改掉。不然程序无法运行。
  3. //////  下面是主程序,不必修改  ////////////////////////////////////////////////////////
  4. echo ';<style>';
  5. . ';body{font-family:Verdana; font-size:12px; background-color:&#35;fcfcfc}';
  6. . ';input{font:12px Tahoma} ';
  7. . ';</style>';;
  8. if ( &#36;password == "isphp" )
  9. {
  10. echo "<h3 align=center>您没有修改管理密码,为避免不安全,请修改成其它的!</h3>";
  11. echo "<center>修改方法如下:<br>"
  12. . ';用记事本打开 本文件(rm.php), 将第二行的 <font color=red>&#36;password = "isphp" </font> 中的 isphp 改成您想要的密码, 再上传至服务器</center>';;
  13. exit;
  14. }
  15. if ( !IsSet(&#36;HTTP_POST_VARS[';dirname';]) )
  16. {
  17. &#36;self = &#36;_SERVER[';PHP_SELF';] ? &#36;_SERVER[';PHP_SELF';] : &#36;PHP_SELF;
  18. echo "<form action=\"{&#36;self}\" method=post name=delform><center><font color=red>欲删除的文件或文件夹</font>: <input name=dirname style=\"color:red\"> "
  19. . "密码: <input type=password name=pass size=6> <input type=submit value=\"确定\"></center></form>";
  20. echo " <SCRIPT> document.delform.dirname.focus() </SCRIPT> ";
  21. }
  22. else
  23. {
  24. if ( &#36;password != &#36;HTTP_POST_VARS[';pass';] )
  25. {
  26. exit("<script>alert(';错误的管理员密码, 无法继续操作! 如果您忘了密码,可以在本文件的第二行查到密码!';);</script>");
  27. }
  28. &#36;dir_name = &#36;HTTP_POST_VARS[';dirname';];
  29. if ( is_file( &#36;dir_name ) )
  30. {
  31.         if ( unlink(&#36;dir_name) )echo "Del file \"&#36;dirname\" successfully!<br>";
  32.                 elseecho "<FONT COLOR=RED>Fail to del file \"&#36;dirname\"!</FONT><br>";
  33. }
  34. else
  35. {
  36.         CleanDir(&#36;dir_name);
  37. if ( rmdir(&#36;dir_name) )echo "Remove dir \"&#36;dirname\" successfully!<br>";
  38.             else                 echo "<FONT COLOR=RED>Fail to Remove dir \"&#36;dirname\"!</FONT><br>";
  39. }
  40. }
  41. function CleanDir(&#36;dir)
  42. {
  43. &#36;handle=opendir(&#36;dir);
  44. while ( &#36;file=readdir(&#36;handle) )
  45. {
  46. if ( (&#36;file==".") || (&#36;file=="..") ) continue;
  47. if ( is_dir("&#36;dir/&#36;file") )
  48. {
  49. CleanDir("&#36;dir/&#36;file");
  50. if ( rmdir("&#36;dir/&#36;file") )echo "Remove dir \"&#36;dir/&#36;file\" successfully!<br>";
  51.                         elseecho "<FONT COLOR=RED>Fail to Remove dir \"&#36;dir/&#36;file\"!</FONT><br>";
  52. }
  53. else      
  54. {
  55. if ( unlink("&#36;dir/&#36;file") )     echo "Del file \"&#36;dir/&#36;file\" successfully!<br>";
  56. else                 echo "<FONT COLOR=RED>Fail to del file \"&#36;dir/&#36;file\"!</FONT><br>";  
  57. }
  58. }
  59. closedir(&#36;handle);
  60. }
  61. ?>
复制代码

                     我是一个呼吸着现在的空气而生活在过去的人
               这样的注定孤独,孤独的身处闹市却犹如置身于荒漠
                                     我已习惯了孤独,爱上孤独
                                 他让我看清了自我,还原了自我
                             让我再静静的沉思中得到快乐和满足
                                   再孤独的世界里我一遍又一遍
                                   不厌其烦的改写着自己的过去
                                             延伸到现在与未来
                                       然而那只是泡沫般的美梦
                                 产生的时刻又伴随着破灭的到来
                         在灰飞烟灭的瞬间我看到的是过程的美丽
                                      而不是结果的悲哀。。。
返回列表