Perl:递归列出文件和目录,但不包括传递的一些目录和文件

时间:2016-12-21 16:01:28

标签: perl perlscript

请提供任何建议或摘要或任何可能有效的内容。

我已经尝试了想要的功能但是如何在递归时排除某些目录?

1 个答案:

答案 0 :(得分:1)

在Linux中,您可以使用Linux" find"和" grep"命令并使用qx在Perl中运行那些Linux命令,以便在Perl中存储Linux命令结果。

e.g。

$cmd = "find . | grep -v 'dir1\|dir2\|...\|dirn'";
$result=qx($cmd);

以上命令组合执行以下操作:

  1. find命令将列出所有目录和 文件递归。
  2. 管道" |"将查找结果传递给grep命令
  3. grep -v命令只会在屏幕上打印不存在的字符串 在" dir1"," dir2" ..." dirn"被忽略
  4. 最后,qx命令将执行find和grep Linux 命令并将输出存储到$ result变量。
  5. 你可以在Windows中做类似的事情。唯一的区别是使用Windows命令行。

    e.g。

    $result=qx('dir /b/s | find /v "workspace" | find /v "TVM"')
    

    上面的命令将以递归方式列出所有目录,但目录名称为" workspace"或者" TVM"。