[Perl] 使用 File::Find 列舉出目錄中所有的檔案

[Perl] 使用 File::Find 列舉出目錄中所有的檔案

最近開始學習 Perl,首先的一個任務是列舉出目錄中的檔案,

並對檔案做一些處理…

看了一下,File::Find 套件可以輕鬆的完成這件事情(可以參考這裡的說明文件),

下面就簡單說明一下~

 

基本上只要準備一個陣列,儲存要搜尋的目錄路徑,再給它一個回呼函式就可以了~

像下面的程式會將 /boot, /home, /lib 三個目錄下的檔案都列舉出來~

#!/usr/bin/perl

use File::Find;

# Prepare folder paths
my @array_folder_path = (“/boot”, “/home”, “/lib”);

find(&find_file_callback, @array_folder_path);

sub find_file_callback
{
    unless (d)
    {
        print “———————————–n;
        print $File::Find::dir=$File::Find::dirn;
        print $File::Find::name=$File::Find::namen;
        print $_=$_n;
    }
}
 

 

程式裡用到的 $File::Find::dir, $File::Find::name, 和 $_ 都會儲存跟這檔案相關的值,

直接看執行結果就十分明白了~

$File::Find::dir 儲存的是包含該檔案的目錄的絕對路徑,

$File::Find::name 儲存的是檔案的絕對路徑,

$_ 儲存的則是只有檔名的部分~

perl_file_find    

 

需要對列舉出來的檔案做處理的話,在回呼函式裡處理就可以囉~

若想連列舉出來的目錄也處理,只要把 unless (-d) 拿掉就可以了~~

(本頁面已被瀏覽過 2,873 次)

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料