使用Perl删除文件夹中的文件

时间:2014-11-24 05:53:55

标签: perl delete-file

我想删除文件夹中的所有文件,其文件名中包含单词TRAR ..我已经找到了以下内容:

CONFIG_DIR=`pwd`
VENDOR=ericsson-msc
RELEASE=v1
BASE_DIR=/appl/virtuo/gways

system ("cd /appl/virtuo/gways/config/ericsson-msc/v1/spool/input_d; rm-rf *TRAR");

2 个答案:

答案 0 :(得分:1)

删除所有配置行(它们甚至是perl?)

CONFIG_DIR=`pwd`
VENDOR=ericsson-msc
RELEASE=v1
BASE_DIR=/appl/virtuo/gways

system ("cd /appl/virtuo/gways/config/ericsson-msc/v1/spool/input_d; rm -rf *TRAR")   

应该可以工作,但你应该真的使用perl代码(取消链接等)

我怀疑你将perl的使用与在bash脚本中使用awk的方式混淆。

答案 1 :(得分:0)

正如@Steffen Ullrich所说,那不是Perl或Shell。但是我会尝试为你做一点Perlish:

首先,请注意

  1. Perl中的变量以$
  2. 开头
  3. 字符串需要"引用它们"
  4. 语句以;
  5. 结尾
  6. =周围的空格都可以,让您更容易阅读
  7. 所以

    $CONFIG_DIR = `pwd`;
    $VENDOR = "ericsson-msc";
    $RELEASE = "v1";
    $BASE_DIR = "/appl/virtuo/gways";
    

    接下来,看看你如何将这些组合成一个像这样的单个字符串(我猜测你想做什么)

    $DIR_FOR_CLEANING = "$BASE_DIR/config/$VENDOR/$RELEASE/spool/input_d";
    

    最后,每当使用-r命令rm以及*之类的通配符时,您都应该非常小心。查找rm的手册页,看看-r是否是您想要做的事情。我不认为你在这里需要它,除非你有一个名为* TRAR的目录,你想要递归删除。我打赌你在input_d目录中只有名为* TRAR的文件。

    此外,如果该目录不存在,那么您编写它的方式的命令可能会失败cd,然后会从您运行脚本的任何目录中递归删除* TRAR从。但是你根本不需要改变目录。试试这样的事情

    system ("echo rm -f $DIR_FOR_CLEANING/*TRAR");
    

    如果echo命令列出了你实际想要删除的文件,那么删除" echo"并且rm将开始删除内容。