ペアの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;
    }
}

関連情報