2014-03-19 88 views
0

我有大約30,000個5MB的文件。我想在每個文件的top上追加幾行。我用bash腳本完成了這個。我想學習一種使用perl的方法。追加到perl文件的頂部

+0

如何找到這些文件?它們是在單個目錄中,還是在整個文件系統中散佈? – Cliff

+0

在一個目錄中。我在一個名爲'list'的文件中列出名字 –

+1

從SO:['在文件頂部追加文本]](http://stackoverflow.com/questions/6141088/append-a-text-on )從5月26日'11。或者['如何在Perl文件的頂部和底部添加行?](http://stackoverflow.com/questions/1230654/how-do-i-add-lines-to-the-top-從2009年8月5日開始。來自Perldoc:['我如何更改,刪除或插入文件中的行,或追加到文件的開頭?](http://learn.perl.org/faq/perlfaq5.html#How- do-I-change-delete-or-insert-a-in-a-file-or-append-to-the-a-start-of-a-file-) – Miller

回答

0

這是如何做到這一點的一個例子。我可能會進行更多的錯誤檢查,比如重命名檢查,我可能會確保我可以讀取和寫入文件和目錄。

#!/usr/bin/env perl 

use strict 
use File::Glob ':glob'; 

my @files = bsd_glob('/some/path/to/files*'); 

for my $file (@files) 
{ 
    open my $in, '<', $file 
     or die "Can't open file: $!"; 
    open my $out, '>', "$file.new" 
     or die "Can't write new file: $!"; 

    while(<$in>) 
    { 
     print $out $_; 
    } 
    close $in; 
    close $out; 

    rename "$file.new", $file; 
} 
+0

感謝您的回答。我認爲我們將不得不使用'> +'這樣的文件句柄操作。何時使用它們?任何教程都會有幫助。 –

+2

據我所知,使用> + open類型時,必須非常小心讀取和寫入的字節。如果您不小心,您將覆蓋現有數據。它用於翻轉位和字節,而不用於預先考慮數據。例如,您可以將「貓」更改爲「狗」,但如果將「貓」更改爲「魚」,則會開始覆蓋數據。 – Cliff

+0

請參閱http://perldoc.perl.org/functions/open.html:「通常不能使用讀寫模式更新文本文件,因爲它們具有可變長度的記錄。」 – Cliff