이미지 크기를 조정하고 다른 폴더로 이동하고 이름을 바꾸는 bash 스크립트를 작성하십시오.

이미지 크기를 조정하고 다른 폴더로 이동하고 이름을 바꾸는 bash 스크립트를 작성하십시오.

약 300개의 이미지가 포함된 폴더가 있는데 각 이미지는 300x300픽셀이고 아티스트의 이미지입니다. 해당 폴더 내에 이라는 또 다른 폴더를 만들었습니다 60.

각 이미지의 크기를 60x60 픽셀로 조정하고 -60파일 이름을 추가하여 파일 이름을 바꾸고 /60폴더로 이동하고 싶습니다.

그래서 이라는 이미지가 있고 bob-dylan.jpg크기를 조정한 다음 로 이름을 바꾸고 에 bob-dylan-60.jpg있도록 이동한다고 가정해 보겠습니다 /60/bob-dylan-60.jpg.

이를 위해 쉘 스크립트를 직접 작성해 보았습니다 batch-resize.sh. 스크립트를 실행 가능하게 만들었습니다. 이 스크립트는 ImageMagick을 사용하려고 시도합니다. 이것이 내가 지금까지 가지고 있는 것입니다.

일괄 크기 조정.sh

#! /bin/bash

for f in /mnt/c/Users/jwan/Pictures/bejebeje-artist-images/*; do
  mogrify -path /mnt/c/Users/jwan/Pictures/bejebeje-artist-images/60 -resize 60x60 $f
done

그러면 이미지 크기가 조정되어 /60디렉토리 로 이동됩니다.하지만파일 이름은 바뀌지 않습니다. 이름 바꾸는 게 정말 힘들어요.

온라인으로 검색해 보니 많은 %기호가 있었지만 설명은 없었습니다.

파일 이름을 바꿔야 한다는 점을 바탕으로 빌드하는 방법을 알려주고 설명해 주시면 매우 감사하겠습니다.어떻게이름 변경이 완료되었습니다.

답변1

다음과 같이 실행합니다 bash scriptname /path/to/files.

#!/bin/bash
for f in "$1"/*.{jpg,png}; do
  [ -f "$f" ] || continue
  base=$(basename "$f")
  convert -resize 60x60 "$f" "$1/60/${base%.*}-60.${base##*.}"
done

원하는 경우 스탠드에 더 많은 확장 기능을 추가할 수 있습니다.

convert입력 파일을 가져오고 $f크기 조정 결과를 디렉터리에 넣습니다 $1/60( $1is 인수).

  • [ -f "$f" ] || continuef일반 파일이 아닌 경우 이 작업을 건너뜁니다. 디렉토리 크기를 조정하고 싶지는 않을 것입니다.
  • basenamegets는 파일 이름에서 경로를 제거합니다. 예를 들어 a/b/c.jpg가 됩니다 c.jpg.
  • ${base##*.}파일의 기본 이름에서 마지막 점까지 모든 것을 제거합니다. 그래서 확장되었습니다.
  • ${base%.*}확장 후 모든 것을 제거하십시오.

관련 정보