2016-12-21 57 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

相關問題