Perl:如何使用“rm”删除文件,文件夹和子目录?

时间:2012-04-19 02:38:37

标签: perl

我正在尝试使用perl脚本删除文件和文件夹。我正在使用“rm -rf $ file”命令删除文件,但它没有做任何事情。 但是,当我在cmd行上尝试相同的命令时,它可以正常工作并删除文件。 附件是代码段。任何帮助表示赞赏。

for each $f (@files)
{
       system "rm -rf $f";
}

我在几台机器上尝试了这个并且它遇到了同样的问题。但是,我尝试使用其他系统命令,如mkdir,tar等,它工作正常。 我也尝试取消链接,但同样的问题仍然存在。

3 个答案:

答案 0 :(得分:4)

您可以使用forforeach,但没有for each。我运行了代码,一旦修复了这个,文件就被删除了。

使用use strict;会发现这一点,因为“每个”都会显示为一个单词。

以下是我使用的代码:

#!/usr/bin/perl

use warnings;
use strict;

my @files = qw( a.txt b.txt c.txt );

for my $f (@files)
{
   system "rm -rf $f";
}

这已成功删除a.txtb.txtc.txt,因此我保证它正在运行代码。

使用perl调试器检查@files,并检查您尝试删除的所有文件的权限。

答案 1 :(得分:1)

use File::Path;
rmtree('folder_path');  #rmtree('/tmp/test');

答案 2 :(得分:0)

如果@files阵列中只有文件而不是文件夹,那么您也可以使用删除文件的unlink命令。这可能比使用rm -rf更安全。如果元素/以某种方式进入您的阵列,那么您最终可能会遇到一个带有rm -rf的Linux损坏。 Unlink on perldoc

unlink @files;