디렉터리에서 32자 길이의 파일을 반복적으로 찾아 다음 명령을 적용합니다.

디렉터리에서 32자 길이의 파일을 반복적으로 찾아 다음 명령을 적용합니다.

내 폴더와 파일은 다음과 같습니다.

/thumbs/6b0/6b029aab9ca00329cd28fd792ecf90a.jpg
/thumbs/6b0/6b029aab9ca00329cd28fd792ecf90a-s.jpg
/thumbs/d11/d11e15a72e20e14c45bd2769d763126d.jpg
/thumbs/d11/d11e15a72e20e14c45bd2769d763126d-s.jpg

이름에 -s가 없는 Thumb 폴더의 모든 하위 디렉터리에 있는 파일에 다음 명령을 적용하고 싶습니다.

mogrify -resize 50% -quality 85 -strip filename.jpg

나는 find와 grep을 둘러 보았지만 이것을 수행하는 방법을 모릅니다.

도움을 주시면 감사하겠습니다.

답변1

find thumbs/ -not -name "*-s.jpg" -exec mogrify -resize 50% -quality 85 -strip {} \;

답변2

주제의 질문에 답하십시오.

find . -name '????????????????????????????????.jpg' -exec cmd {} \;

?이 32 초를 삽입하려면 를 사용하거나 tcsh패턴 을 입력 하세요 . 이 쉘을 사용하고 모드 에서 a 를 입력하고 삽입 모드를 종료하려면 해당 내용 잘라내기를 누른 다음 32번 붙여넣습니다.zshbashemacsAlt+3Alt+2?kshvi?Escx?32p

GNU를 사용하면 find다음도 수행할 수 있습니다.

find . -regextype egrep -regex '.*/[^/]{32}\.jpg' -exec cmd {} \;

관련 정보