]> Creatis software - clitk.git/blob - vv/scripts/dcm_sort_by_field.sh
Initial revision
[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             [ -d "sorted/$name" ] || mkdir "sorted/$name" 2>>/dev/null
23             basename=$(basename "$i")
24             cp -l "$i" "sorted/$name/$basename"
25         }&
26         jobrunning=$(( $jobrunning + 1 ))
27     done
28     finished=$(( $finished + $conc_jobs  ))
29     echo -e -n "( $finished / $total )\r"
30     wait
31 done
32 rm dicom_files