2016-12-21 27 views
-5

请给出任何建议或代码片段或任何可能的工作。Perl:递归列出文件和目录,但排除一些通过的目录和文件

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

+2

如果你已经有你已经试过的代码,请编辑你的问题并粘贴它。这样我们可以看到你已经付出了努力,并且指导你一个解决方案(而不是为你编写代码全部)。 – stevieb

+0

[看看这个](http://stackoverflow.com/questions/36822986/print-files-and-subdirectories-of-given-directory/36823076#36823076)和请包括一些显示努力,你不能只是要求我们在这里编写代码。 – AbhiNickz

回答

0

在Linux中,您可以使用Linux“find”和“grep”命令并使用qx在Perl中运行这些Linux命令,以将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命令并将输出存储到$ result变量。

你可以在Windows中做类似的事情。唯一的区别是使用Windows命令行。

例如

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

上面的命令将列出递归除了目录具有名称“工作区”或“TVM”的所有目录。

+2

csay,欢迎来到SO!我们非常感谢您花费精力去帮助,因为这是本网站的全部目的。你的代码可以工作(据我所知),但OP要求提供Perl解决方案。 (其实他要求我们为他编写代码,这在这里没有得到很好的接受。)你的文章写得很好,格式正确并解释你的解决方案。我喜欢 - 我希望OP也有同样的态度! – PerlDuck

相关问题