디렉토리 구조에서 파일을 생성하는 방법

디렉토리 구조에서 파일을 생성하는 방법

다음과 같은 디렉토리 구조가 있습니다.

lib- 
    |-filled
            |-A4MpFILLED.svelte
            |-A5KFILLED.svelte
            |- // more files
    |-outlined
            |-A4MpOUTLINED.svelte
            |-A5KOUTLINED.svelte
            |- // more files
    |-round
            |-A4MpROUND.svelte
            |-A5KROUND.svelte
            |- // more files
    |-sharp 
            |-Add_cardSHARP.svelte
            |-Add_homeSHARP.svelte
            |- // more files

이 구조를 바탕으로 다음과 같은 내용으로 index.js 파일을 생성하고 싶습니다.

export { default as A4MpFILLED } from './filled/A4MpFILLED.svelte';
export { default as A5KFILLED } from './filled/A5KFILLED.svelte';
// more lines
export { default as A4MpOUTLINED } from './outlined/A4MpOUTLINED.svelte';
export { default as A5KOUTLINED } from './outlined/A5KOUTLINED.svelte';
// more lines
export { default as A4MpROUND } from './round/A4MpROUND.svelte';
export { default as A5KROUND } from './round/A5KROUND.svelte';
// more lines
export { default as Add_cardSHARP } from './sharp/Add_cardSHARP.svelte';
export { default as Add_homeSHARP } from './sharp/Add_homeSHARP.svelte';
// more lines

A4MpFILLED, A4MpOUTLINED 등과 같이 파일 이름 끝에 디렉터리 이름이 추가되므로 모든 파일 이름은 고유합니다.

Bash를 사용하여 이 작업을 어떻게 수행할 수 있나요?

다음부터 시작했는데 이후에는 어떻게 진행해야 할지 모르겠습니다.

# list file names
find . -type f '(' -name '*.svelte' ')' > index1
# remove ./ from each line
sed 's|.*/||' index1 > index2
# create a names.txt
sed 's|.svelte||' index2 > names.txt

코드의 기능을 설명해주세요. 나도 배우고 싶다.

답변1

파일 이름 앞에 줄 바꿈이나 더 많은 점이 없다고 가정합니다 .svelte.

cd lib && find . -type f -name '*.svelte' | sort | awk -F'[/.]' '{
    print "export { default as " $(NF-1) " } from \047" $0 "\047;"
}' > my/path/to/index.js

또는

cd lib && printf '%s\n' ./*/*.svelte | awk -F'[/.]' '{
    print "export { default as " $(NF-1) " } from \047" $0 "\047;"
}' > my/path/to/index.js

(파일 이름은 정렬되었습니다)

관련 정보