콘텐츠가 포함된 새 파일을 반복적으로 생성하는 스크립트

콘텐츠가 포함된 새 파일을 반복적으로 생성하는 스크립트

각 폴더에 2~3개의 jpg 파일이 포함된 폴더 트리가 있습니다. 폴더가 많기 때문에 jpg 파일이 포함된 각 폴더에 Inkscape 파일을 반복적으로 생성하고 svg 파일의 이름을 포함된 폴더의 이름으로 바꾸는 스크립트를 개발하고 싶습니다. 이 목표를 어떻게 달성할 수 있나요?

답변1

JPG 파일이 포함된 디렉터리를 찾아 다음을 inkscape실행합니다.

find . -type d \
    -exec sh -c 'set -- "$1"/*.jpg; [ -e "$1" ]' sh {} ';' \
    -exec sh -c 'inkscape --export-plain-svg="$1/${1##*/}.svg" "$1"/*.jpg' sh {} ';'

현재 디렉토리 아래의 디렉토리를 찾습니다. 디렉터리 에 이 디렉터리에서 호출된 .jpg파일이 하나 이상 포함되어 있으면 디렉터리에서 모든 파일을 추출하고 디렉터리 이름을 파일 이름으로 사용하여 SVG 파일을 디렉터리로 내보냅니다.inkscape.jpg

출력 파일 이름은 스크립트에 대한 첫 번째 명령줄 인수 $1/${1##*/}.svg( 파일이 포함된 디렉터리의 경로 )와 where가 디렉터리에서 경로를 제거하고 디렉터리 이름만 남기는 방식으로 구성됩니다 .$1sh -c.jpg${1##*/}

나에게는 프로그램이 없고 inkscape프로그램에 익숙하지 않기 때문에 이것은 테스트되지 않았습니다(설명서를 읽는 것 외에는).

다음과 같은 디렉토리 구조를 고려하면:

$ tree
.
|-- dirA
|   `-- 1
|       |-- file.jpg
|       |-- image.jpg
|       `-- picture.jpg
`-- dirB
    |-- 2
    |   |-- file.jpg
    |   |-- image.jpg
    |   `-- picture.jpg
    |-- 3
    |   |-- file.jpg
    |   `-- image.jpg
    `-- 4
        |-- file.jpg
        `-- image.jpg

6 directories, 10 files

다음이 실행됩니다:

inkscape --export-plain-svg=./dirA/1/1.svg ./dirA/1/file.jpg ./dirA/1/image.jpg ./dirA/1/picture.jpg
inkscape --export-plain-svg=./dirB/2/2.svg ./dirB/2/file.jpg ./dirB/2/image.jpg ./dirB/2/picture.jpg
inkscape --export-plain-svg=./dirB/3/3.svg ./dirB/3/file.jpg ./dirB/3/image.jpg
inkscape --export-plain-svg=./dirB/4/4.svg ./dirB/4/file.jpg ./dirB/4/image.jpg

관련 정보