고유한 파일 이름으로 폴더 생성

고유한 파일 이름으로 폴더 생성

고유한 파일 이름으로 폴더를 만들려고 합니다. 파일은 다음과 같습니다.

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

나는 bash 마술이 다음과 같은 결과를 얻길 원합니다.

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

그리고 폴더 이름을 추출하기 위해 이 코드를 시도했지만 중단되었습니다.

all_patterns=()
for file in sorted/folder/*/*
do
    name=${file##*/}
    pattern=`echo ${name} | cut -f1 -d '_'`
    all_patterns+=( "$pattern" )
done

답변1

이 코드를 사용하여 디렉터리 이름을 생성하고 해당 디렉터리를 만들 수 있습니다.

cd  T001/20000101
for i in *
do
dname=$(echo $i|awk -F'[-_]' '{print $1_$2}')
mkdir -p $dname
mv "$i" $dname
done

관련 정보