Cygwin에서는 와일드카드를 사용하여 모든 이미지를 다듬습니다.

Cygwin에서는 와일드카드를 사용하여 모든 이미지를 다듬습니다.

아쉽게도 저는 어쩔 수 없이 Windows를 사용하게 되었습니다. 그래서 Cygwin몇 가지 Linux 명령을 설치했습니다.

다음 명령은 정상적으로 작동합니다. 이미지를 잘린 버전으로 대체합니다.

"C:\Program Files\Cygwin\bin\convert" image1.png -trim image1.png 

하지만 모든 이미지 파일에 대해 이 명령을 어떻게 실행합니까?

"C:\Program Files\Cygwin\bin\convert" * -trim ????

답변1

최대 명령 지원을 위해 쉘을 사용할 수 있도록 cygwin을 설치했습니다. "C:\Program Files\Cygwin\cygwin.bat
이렇게 하면 bash 쉘이 제공되고 방향을 변경하여 이미지 위치로 이동할 수 있습니다. 이미지 위치가 이라고 가정하고 "D:\Your Name\Images"해당 위치로 이동 cd "/cygdrive/d/Your Name/Images" 한 다음 bash를 사용하여 명령을 호출하려고 합니다.for 루프:

for file in *
do
convert "$file" -trim "$file"
done

답변2

이것을 확장/개선으로 생각하십시오.@슬릭스답변.

cygpathCygwin에는 Windows 경로를 bashCygwin 셸에서 이해할 수 있는 *nix 스타일 로 변환할 수 있는 유용한 유틸리티가 있습니다 .

$ cygpath "D:\Path\To\Images"
/cygdrive/d/Path/To/Images

제안된 명시적 -loop 외에도 파일 이름 필터링을 더 잘 지원하고 공백이 있는 이름을 더 안전하게 지원할 수 있는(Windows에서 발생할 수 있는 것과 같은) for사용을 고려할 수도 있습니다 .find

find "$(cygpath "D:\Path\To\Images")"/ -type f -name '*.png' -exec convert '{}' -trim '{}' \;
  1. 디렉토리 내에서 D:\Path\To\Images,
  2. ( ) ( ) -type f로 끝나는 파일 찾기 ,png-name '*.png'
  3. execconvert명령은 각 결과 파일에 대해 '{}'(참조된) 자리 표시자를 사용합니다.

관련 정보