Ich versuche, Ordner aus eindeutigen Dateinamen zu erstellen. Hier sind die Dateien:
T001
└── 20000101
├── 6_3D-MP-RAGE_97.dcm
├── 6_3D-MP-RAGE_98.dcm
├── 5_133_VOLUMES_99027.dcm
├── 5_133_VOLUMES_99028.dcm
├── 5_133_VOLUMES_99029.dcm
├── 5_133_VOLUMES_99030.dcm
├── 4_COR_3D_T1_MPR_1.dcm
├── 4_COR_3D_T1_MPR_107.dcm
Ich möchte, dass die Bash-Magie folgendes bewirkt:
T001
└── 20000101
├── 6_3D
├── 6_3D-MP-RAGE_97.dcm
├── 6_3D-MP-RAGE_98.dcm
├── 5_133
├── 5_133_VOLUMES_99027.dcm
├── 5_133_VOLUMES_99028.dcm
├── 5_133_VOLUMES_99029.dcm
├── 5_133_VOLUMES_99030.dcm
├── 4_COR
├── 4_COR_3D_T1_MPR_1.dcm
├── 4_COR_3D_T1_MPR_107.dcm
Und ich habe diesen Code ausprobiert, um Ordnernamen zu extrahieren, bin aber stecken geblieben:
all_patterns=()
for file in sorted/folder/*/*
do
name=${file##*/}
pattern=`echo ${name} | cut -f1 -d '_'`
all_patterns+=( "$pattern" )
done
Antwort1
Sie können diesen Code ausprobieren, um die Verzeichnisnamen zu generieren und diese Verzeichnisse zu erstellen:
cd T001/20000101
for i in *
do
dname=$(echo $i|awk -F'[-_]' '{print $1_$2}')
mkdir -p $dname
mv "$i" $dname
done