]> Creatis software - clitk.git/blob - vv/scripts/dcm_sort_by_field.sh
don't crash if ther is a "/" in the dicom field
[clitk.git] / vv / scripts / dcm_sort_by_field.sh
1 #!/bin/bash
2 if [ $# -lt 1 ]
3 then
4     echo Usage: dcm_sort_by_field.sh \"field name\"
5     exit
6 fi
7 [ -d sorted ] && rm -r sorted
8 find . -type f -iname "*.dcm" > dicom_files
9 finished=0
10 total=$(wc -l dicom_files)
11 mkdir sorted
12 cat dicom_files | while :
13 do
14     jobrunning=0
15     conc_jobs=50
16     while [ $jobrunning -lt $conc_jobs ]
17     do
18         read i || { wait; break 2; }
19         {
20             name="$(clitkDicomInfo "$i" | grep "$1" | sed "s/.*\[//;s/.$//;s/ /_/g")"
21             [ -z "$name" ] && echo "Warning: key not found in file $i" 1>&2 && exit 1 #don't do anything if dicom key not found
22             [ -z `echo $name | grep "/"` ] || name=`echo $name | sed 's/\//\_/'`
23             [ -d "sorted/$name" ] || mkdir "sorted/$name" 2>>/dev/null
24             basename=$(basename "$i")
25             cp -l "$i" "sorted/$name/$basename"
26         }&
27         jobrunning=$(( $jobrunning + 1 ))
28     done
29     finished=$(( $finished + $conc_jobs  ))
30     echo -e -n "( $finished / $total )\r"
31     wait
32 done
33 rm dicom_files