각 폴더에 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가 디렉터리에서 경로를 제거하고 디렉터리 이름만 남기는 방식으로 구성됩니다 .$1
sh -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