-5

请提供任何建议或片段或任何可能有用的东西。

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

4

1 回答 1

1

在 Linux 中,您可以使用 Linux 的“find”和“grep”命令并在 Perl 中运行这些 Linux 命令,使用 qx 将 Linux 命令结果存储在 Perl 中。

例如

$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 变量。

您可以在 Windows 中执行类似的操作。唯一的区别是使用 Windows 命令行。

例如

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

上面的命令将递归列出所有目录,除了目录名称为“workspace”或“TVM”。

于 2016-12-21T21:03:13.437 回答