2014-03-19 3 views
0

각각 30,000 개의 파일이 5MB 있습니다. 모든 파일의 top에 몇 줄을 덧붙이고 싶었습니다. 나는 bash 스크립트를 사용하여 그렇게했다. 나는 perl을 사용하여 그것을하는 방법을 배우고 싶었다.perl 파일의 맨 위에 추가

+0

이 파일들을 어떻게 찾을 수 있습니까? 파일 시스템이 단일 디렉토리에 있거나 파일 시스템 전체에 산재 해 있습니까? – Cliff

+0

단일 디렉토리에 있습니다. 나는'list'라는 파일에 이름의 목록을 가지고있다. –

+1

SO : ['파일의 맨 위에 텍스트 추가하기 '] (http://stackoverflow.com/questions/6141088/append-a-text-on -the-top-of-the-file)을 2011 년 5 월 26 일에 발표했습니다. 또는 [''Perl에서 파일의 위와 아래에 줄을 추가하는 방법은 무엇입니까?] (http://stackoverflow.com/questions/1230654/how-do-i-add-lines-to-the-top- and-bottom-of-a-file-in-perl)을 2009 년 8 월 5 일부터 배포합니다. Perldoc : [''파일에서 행을 어떻게 변경, 삭제 또는 삽입합니까, 아니면 파일의 처음에 추가합니까? '] (http://learn.perl.org/faq/perlfaq5.html#How- do-I-change-delete-or-insert-a-line-in-a-file 또는 -a 파일 시작 부분) - – Miller

답변

0

이것은 수행 방법의 예입니다. 아마도 이름 바꾸기와 같은 fgw 오류 검사를 추가하고 파일과 디렉토리를 읽고 쓸 수 있는지 확인하고 싶을 것입니다.

#!/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

필자가 생각해 보면, + 열기 유형을 사용할 때는 읽고 쓰는 바이트에 매우주의해야합니다. 조심하지 않으면 기존 데이터를 덮어 씁니다. 그것은 비트와 바이트를 뒤집기위한 것이지 데이터를 미리 준비하는 것이 아닙니다. 예를 들어 "cat"을 "dog"로 변경할 수 있지만 "cat"을 "fish"로 변경하면 데이터 덮어 쓰기가 시작됩니다. – Cliff

+0

http://perldoc.perl.org/functions/open.html 참고 : "가변 길이 레코드가 있기 때문에 일반적으로 텍스트 파일을 업데이트하는 데 읽기 - 쓰기 모드를 사용할 수 없습니다." – Cliff

관련 문제