拡張子のない dicom ファイルを認識して操作

dcm4chee で dicom ファイルをインポートすると、新たに作成される dicom ファイルには拡張子がありません。
なので、dcm4chee で構築されたファイルシステムを再度インポートして、ディレクトリ構造を再構築したい場合には少し面倒な思いをすることになります。
どうしてこういうことするんだろう?

file コマンドでファイル形式を確認

実際には dicom ファイルでありながら拡張子のないファイルを1つ選んで sample に rename し、以下のようにすると sample のファイル形式を確認できます。


file sample

sample: DICOM medical imaging data

ファイル形式は、「DICOM medical imaging data」であることがわかります。

sample というファイルから「DICOM medical imaging data」という文字列を抽出するには


a=`file -b sample`

「`」バッククォートは「囲った中身をコマンドとして実行しその結果を出力」します。
-b というオプションは brief の意味で、「出力行の最初にファイル名を表示しない」という意味です。
つまり、$a には「DICOM medical imaging data」という文字列が入っています。

ファイル形式が「DICOM medical imaging data」であるものを抽出

あるディレクトリを再帰的に検索して、ファイル形式が「DICOM medical imaging data」であるものを抽出して「.dcm」という拡張子を付けて、1つのディレクトリに移動するには、


#!/bin/bash

origin="/var/www/html/dcm"
destination="/var/www/html/dcmtotal/"
for fl in `\find $origin -maxdepth 6 -type f`; do
    a=`file -b $fl`
    if [[ $a = "DICOM medical imaging data" ]];then
        fn=`basename $fl`
        echo $fn
        mv $fl $destination$fn".dcm"    
    fi
done
# まとめてインポート
cd /home/user/dcm4che-2.0.29/bin
./dcmsnd DCM4CHEE@localhost:11112 $destination*.dcm

if 文は二重括弧で囲まないと、うまく動きません。

シェルスクリプトって本当に難しい。