簡體   English   中英

為多個目錄中的文件運行 perl 腳本

[英]Run perl script for files in multiple directories

我在不同的子目錄中有多個文件(同名)。 我想一次在所有這些文件上運行我的 perl 腳本,而不必單獨執行。

例如,我有以下文件路徑:

/Users/.../Documents/Results/DataSet1/Parameter1/Parameter2/data.dat
/Users/.../Documents/Results/DataSet2/Parameter1/Parameter2/data.dat
/Users/.../Documents/Results/DataSet3/Parameter1/Parameter2/data.dat
/Users/.../Documents/Results/DataSet4/Parameter1/Parameter2/data.dat
...

我想在Results目錄中的每個data.dat文件上運行我的 perl 腳本。 旁注:我使用的是 Mac,想從終端運行腳本。 現在要單獨處理每個文件,我對每個文件夾使用perl myscript.pl *.dat

一種解決方案是讓 bash 為您完成工作。

for i in $(find /Users/.../Documents/Results -name data.dat); do (cd $(dirname $i); perl myscript.pl data.dat); done

您可以將線程和 glob 與 perl 結合使用,如下所示:

use threads;

my $basepath = '/Users/.../Documents/Results';
my @files = glob qq("${basepath}/DataSet?/Parameter?/Parameter?/data.dat");

threads->create(\&processdata, $_) for @files;

sub processdata {
    my $file = shift;
    # do your processing here
}

這將為 glob 找到的每個 data.dat 文件啟動一個不同的線程。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM