]> Creatis software - clitk.git/blob - scripts/dcm_sort_by_field.sh
Merge branch 'master' of /home/dsarrut/clitk3.server
[clitk.git] / 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" | head -n 1 | sed "s/.*\[//;s/.$//;s/ /_/g")"
21             [ -z "$name" ] && echo "Warning: key not found in file $i" 1>&2 && mkdir -p unsorted && basename=$(basename "$i") && cp -l "$i" "unsorted/$basename" && exit 1 #copy to unsorted directory if dicom key not found
22             #[ -z "$name" ] && echo "Warning: key not found in file $i" 1>&2 && exit 1 #don't do anything if dicom key not found
23             name=`echo "$name" | sed 's/\//_/g'`
24             name=`echo "$name" | sed 's/\\\/_/g'`
25             name=`echo "$name" | sed 's/\*/_/g'`
26             [ -d "sorted/$name" ] || mkdir "sorted/$name" 2>>/dev/null
27             basename=$(basename "$i")
28             cp -l "$i" "sorted/$name/$basename"
29         }&
30         jobrunning=$(( $jobrunning + 1 ))
31     done
32     finished=$(( $finished + $conc_jobs  ))
33     echo -e -n "( $finished / $total )\r"
34     wait
35 done
36 rm dicom_files