확장자를 생략하려면 찾기를 사용하시겠습니까?

확장자를 생략하려면 찾기를 사용하시겠습니까?

여러 .png 파일에서 축소판을 만들어야 하는데 ImageMagicks convert유틸리티를 사용하여 이 작업을 수행하고 싶습니다. 축소판 자체가 아닌 모든 파일을 재귀적으로 찾으려면 다음 호출을 사용합니다(읽을 수 있도록 두 줄로 분할).

find . -type f -name "*.png" -not -name "*thumb.png*" \
  -exec convert {} -thumbnail 200x200 {}.thumb.png \;`

a.png.thumb.png그러나 이것을 파일 이름으로 실행하면 당연히 a.png. 변환에 전달된 .png두 번째 매개변수 {}에서 확장자를 제거하려면 어떻게 해야 합니까?

답변1

{}가장 쉬운 방법은 이것을 쉘에 전달 sh하고 쉘이 이를 수행하도록 하는 것입니다.

find ... \
    -exec sh -c 'convert "$0" -thumbnail 200x200 "${0%.png}.thumb.png"' {} \;

관련 정보