예를 들어, 특정 디렉토리 에 , 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;
}
}