我想删除文件夹中的所有文件,其文件名中包含单词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");
答案 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:
首先,请注意
$
;
=
周围的空格都可以,让您更容易阅读所以
$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
将开始删除内容。