쌍을 이루는 TIFF 파일을 디렉터리에 병합

쌍을 이루는 TIFF 파일을 디렉터리에 병합

예를 들어, 특정 디렉토리 에 , etc. 까지 sample1.TIFF1000 개의 TIFF 파일이 있다고 가정해 보겠습니다 . 각 파일 쌍 ( and to , to 등) 을 병합하려고 합니다 . 완료되면 500개의 병합된 TIFF 파일이 남게 됩니다. Unix/Perl/AIX 스크립트를 사용하여 이 작업을 어떻게 수행할 수 있습니까?sample2.TIFFsample1000.TIFFsample1.TIFFsample2.TIFFsample1_2.TIFFsample3.TIFFsample4.TIFFsample3_4.TIFF

답변1

TIFF를 병합하려면 다음을 사용할 수 있습니다.티파니. 예를 들어 다음과 같은 간단한 루프를 작성할 수 있습니다 Perl.

for ($i= 1; $i<= 100; $i+=2) { 
    $j = $i + 1;    
    system("tiffcp sample$i.TIFF sample$j.TIFF sample$i\_$j.TIFF");
}

고쳐 쓰다:

TIFF 파일에 시퀀스가 ​​없는 경우, 즉, Sample1.tif, Sample2.tif 대신 abc.tiff, def.tiff.. 등을 사용하고, 이를 기준으로 폴더의 처음 2개의 Tiff를 병합해야 합니다. 타임스탬프를 사용하면 다음을 수행할 수 있습니다.

TIFF 파일 정렬타임스탬프그런 ls -lt다음 출력에서 ​​TIFF 파일 이름을 추출합니다. (아래 참조)을 사용하여 이 작업을 수행할 수 있습니다. awk또는 액세스 권한이 있는 경우 를 사용하여 출력의 각 행에서 불필요한 열을 제거 vim할 수 있습니다 .Ctrl-v

ls -lt | awk '$9 ~ "TIFF$" { print $9 } ' > sorted_TIFFs.list

TIFF 파일의 정렬된 목록이 있으면 해당 파일을 반복하고 tiffcp간단한 Perl스크립트로 실행할 수 있습니다. 스크립트는 sorted_TIFFs.list이전 단계에서 생성한 내용을 명령줄 입력으로 사용합니다.

#!/bin/perl

$file=$ARGV[0];
open FILE, $file || die "Invalid filename";

while ($line=<FILE>) {
    chomp($line);
    $file1 = $line;
    if ($line = <FILE>)
    {
        chomp ($line);
        $file2 = $line;
        $prefix= $file1;
        $prefix =~ s/\.TIFF//; #to avoid a.TIFF_b.TIFF
        system("tiffcp $file1 $file2 $prefix\_$file2\n");
    } else {
       print "No matching TIFF file, odd number of total files.\n";
       exit;
    }
}

관련 정보