たとえば、特定のディレクトリに、etc。sample1.TIFF
1000個のTIFFファイルがあるとしましょう。各ファイルペア(and to、toなど)をマージしようとしています。完了すると、500個のマージされたTIFFファイルが残ります。 Unix / Perl / AIXスクリプトを使用してこれをどのように実行できますか?sample2.TIFF
sample1000.TIFF
sample1.TIFF
sample2.TIFF
sample1_2.TIFF
sample3.TIFF
sample4.TIFF
sample3_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;
}
}