免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3189 | 回复: 7

咨询目录排除问题 [复制链接]

论坛徽章:
0
发表于 2015-07-30 13:32 |显示全部楼层
最近要修改一个零几年的perl脚本,可从来没玩过perl,依瓢画葫芦改了点东西后发现不对,麻烦大家帮忙看看


需求:当(远端)文件不存在以及全路径文件名中不包含app/upload或者app/download关键字时,才生成rm 命令,其余条件下不生成


  #查找出删除的文件,并生成删除的shell命令
  foreach $tgtFile (keys(%$allTgtFiles))
  {
    if( not exists($$allSrcFiles{$tgtFile}) &&   $$allSrcFiles{$tgtFile} !~ /app\/upload/ && $$allSrcFiles{$tgtFile} !~ /app\/download/  )
  #  if( not exists($$allSrcFiles{$tgtFile}) )
    {
      $cmdStr = "${cmdStr}if [ -e '$tgtFile' ]; then rm -f '$tgtFile'; fi\n";
      #print("$targetIP: 预删除文件 $targetPath/$tgtFile\n");
    }
  }

  foreach $tgtDir (keys(%$allTgtDirs))
  {
    if( not exists($$allSrcDirs{$tgtDir}) &&   $$allSrcDirs{$tgtDir} !~ /app\/upload/ && $$allSrcDirs{$tgtDir} !~ /app\/download/ )
  #  if( not exists($$allSrcDirs{$tgtDir}) )
    {
      $cmdStr = "${cmdStr}if [ -e '$tgtDir' ]; then  rm -rf '$tgtDir'; fi\n";
      #print("$targetIP: 预删除目录 $targetPath/$tgtDir\n");
    }
  }

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
发表于 2015-07-30 14:08 |显示全部楼层
回复 1# lasama


    not 的优先级比 && 低。

论坛徽章:
0
发表于 2015-07-30 14:24 |显示全部楼层
回复 2# MMMIX

谢谢MMIX指点,是改成这样吗?   ps:暂时不好验证。



if( $$allSrcFiles{$tgtFile} !~ /openwebapp\/upload/ && $$allSrcFiles{$tgtFile} !~ /openwebapp\/download/  && (not exists($$allSrcFiles{$tgtFile}) ) )


if( $$allSrcDirs{$tgtDir} !~ /openwebapp\/upload/ && $$allSrcDirs{$tgtDir} !~ /openwebapp\/download/ && (not exists($$allSrcDirs{$tgtDir}) ) )

   

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
发表于 2015-07-30 14:27 |显示全部楼层
回复 3# lasama


    又错了

论坛徽章:
0
发表于 2015-07-30 15:17 |显示全部楼层
回复 4# MMMIX

刚才验证了一把,确实不对,愿闻其详
   

论坛徽章:
0
发表于 2015-07-30 15:18 |显示全部楼层
本帖最后由 L_WC 于 2015-07-30 15:19 编辑

回复 1# lasama

%$allTgtDirs 的值要放全路径文件名。
  1. foreach $tgtDir (keys(%$allTgtDirs)){
  2.         unless( -e $allSrcFiles{$tgtFile} ){
  3.                 `rm -f $allSrcFiles{$tgtFile}`;
  4.         }
  5.         if( $allSrcFiles{$tgtFile} !~ m/app\/upload/g){
  6.                 `rm -f $allSrcFiles{$tgtFile}`;
  7.         }
  8.         if( $allSrcFiles{$tgtFile} !~ m/app\/download/g){
  9.                 `rm -f $allSrcFiles{$tgtFile}`;
  10.         }
  11. }
复制代码

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
发表于 2015-07-30 15:24 |显示全部楼层
回复 5# lasama


    我估计你是想当然的认为 exists 是用来测试那个文件是否存在,可是 exists 的作用是用来测试那个 hash 成员是否存在。

论坛徽章:
0
发表于 2015-07-31 15:49 |显示全部楼层
回复 7# MMMIX


   
确实是这么想当然的,谢谢指点,我再看看
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP