파일 계열을 폴더에 배치

파일 계열을 폴더에 배치

많은 수의 글꼴 파일(2728개 파일)이 폴더에 플랫하게 배치되어 있습니다.

동일한 글꼴 계열에 속하는 모든 파일을 폴더 이름이 글꼴 계열의 전체 이름인 폴더로 이동하고 싶습니다.

예를 들어 다음 파일 목록에서:

Axle.otf
AxleBold.otf
AxleBoldItalic.otf
AxleCondBold.otf
AxleCondensed.otf
AxleCondItalic.otf
AxleExpanded.otf
AxleExpBold.otf
AxleExpItalic.otf
AxleItalic.otf
AxleNarBold.otf
AxleNarItalic.otf
AxleNarrow.otf
AxleWide.otf
AxleWideBold.otf
AxleWideItalic.otf

Distract.otf
DistractBold.otf
DistractBoldItalic.otf
DistractCondBold.otf
DistractCondensed.otf
DistractCondItalic.otf
DistractExpanded.otf
DistractExpBold.otf
DistractExpItalic.otf
DistractItalic.otf
DistractNarBold.otf
DistractNarItalic.otf
DistractNarrow.otf
DistractWide.otf
DistractWideBold.otf
DistractWideItalic.otf

Voltagio.otf
VoltagioBold.otf
VoltagioBoldItalic.otf
VoltagioCondBold.otf
VoltagioCondensed.otf
VoltagioCondItalic.otf
VoltagioExpanded.otf
VoltagioExpBold.otf
VoltagioExpItalic.otf
VoltagioItalic.otf
VoltagioNarBold.otf
VoltagioNarItalic.otf
VoltagioNarrow.otf
VoltagioOutline.otf
VoltagioWide.otf
VoltagioWideBold.otf
VoltagioWideItalic.otf

"Axle"로 시작하는 모든 파일은 Axle이라는 폴더에 있고, "Distract"로 시작하는 파일은 Distract라는 폴더에 있고, Voltagio 폴더 등을 이동하기 위한 모든 "Voltagio" 파일이 있습니다.

기본적으로 글꼴 파일의 가장 짧은 이름은 해당 글꼴 계열의 기본 이름이며, 해당 기본 이름을 가진 폴더로 계열을 수집하는 데 사용해야 합니다. 기본 이름의 길이는 약 4~12자입니다.

또 다른 문제는 일부 "시리즈"에는 파일이 하나만 포함되어 있기 때문에 별도의 폴더로 이동하지 않고 대상 폴더의 루트 수준에 남아 있기를 원한다는 것입니다.

어떤 도움이라도 대단히 감사하겠습니다.

답변1

귀하의 예에서는 모든 파일 이름이 다음과 같습니다 <font-family>[<style-surfix>].otf.

  • <font-family>모든 파일 이름에도 나타납니다.글꼴 모음 디렉토리당신은 만들고 싶어
  • <style-surfix>가능한하나, 또는콤비네이션7개 요소 세트:Bold, Italic, Cond, Exp, Nar, Wide, Out

내 대답을 더 쉽게 표현하기 위해 다음을 호출합니다.

  • <font-family>.otf: 네이키드 글꼴
  • <font-family><style-surfix>.otf: 파생 글꼴

이 스크립트는 작업을 올바르게 수행합니다.

# move all `derived fonts` to `.temp/` directory:
mkdir -p .temp/
mv "*{Bold,Italic,Cond,Exp,Nar,Wide,Out}*.otf" .temp/ 2> /dev/null

for file in ./*.otf; do
    # get `family name` based on `bare font`'s name
    name=${file%.*}

    # create `family directory`
    mkdir -p "${file%.*}"

    # move `bare font` to correct directory
    mv "$file" "$name/"

    # move `derived font` to corresponding `family directory`
    mv .temp/"$name"*.otf "$name/"
done;

# remove temporary directory
rmdir .temp/ 2> /dev/null

관련 정보