MediaWiki 이미지 디렉토리에 있는 모든 PNG를 자동으로 최적화하는 스크립트를 어떻게 작성합니까?

MediaWiki 이미지 디렉토리에 있는 모든 PNG를 자동으로 최적화하는 스크립트를 어떻게 작성합니까?

images/저는 64비트 Debian 8.1 VirtualBox 시스템에 MediaWiki 1.25.2를 설치했고, 해당 설치에서 내 DropBox로 디렉토리를 업로드할 수 있기를 원합니다 . 나는 천박한 사람이기 때문에 optipngDropBox가 너무 꽉 차서 더 많은 저장 공간을 지불해야 하는 일이 없도록 이미지 디렉터리에 있는 PNG를 최적화하여 이미지 디렉터리의 크기를 최소화하려고 노력하고 있습니다 . 내 위키에는 현재 내가 업로드한 182개의 PNG가 있습니다(그리고 위키에 있는 원본 PNG 및 SVG의 썸네일인 100개 이상의 다른 썸네일 포함). 따라서 optipng -o7 <filename>이를 수동으로 실행하는 것은 매우 지루할 것입니다.

그래서 여기서 묻고 싶습니다. 이 작업을 자동으로 수행하도록 bash 스크립트를 어떻게 작성할 수 있습니까? 이제 나는 이 작업을 수행하는 방법에 대한 몇 가지 퍼즐을 알고 있습니다. 예를 들어 프로그램이 find지정된 위치에 지정된 파일 확장자를 가진 파일 목록을 생성할 수 있다는 것을 알고 있습니다(예: 모든 파일이 PNG 로 무작위로 나열되는 디렉터리 sudo find . -type f -name "*.png"에서 실행 ). , 하지만 해당 프로그램을 사용하여 해당 디렉터리와 관련된 모든 파일 이름이 포함된 텍스트 파일(예: )을 만드는 방법을 모르겠습니다 . 또한 텍스트 파일에 나열된 PNG를 최적화하는 방법도 모르겠습니다 .images//var/lib/mediawiki/imagesf/f1/Frugalware_Linux_screenshot.pngoptipng

답변1

find여기에서 사용하세요 :

find (...your filters ...) -exec optipng -o7 '{}' +

가능한 한 +많은 결과를 인수로 사용하려고 시도한다는 점에 유의하십시오 . 프로그램이 여러 파일을 인수로 허용하므로 괜찮습니다. 이는 명령의 마지막 매개변수인 경우에만 작동합니다 . 다른 옵션findoptipng+-exec

find (...filters...) -exec optipng -o7 '{}' \;

각 결과는 한 번만 실행되므로 optipng속도가 훨씬 느려집니다.

참고 사항: {}in은 명령을 실행할 수 있는 find검색 결과의 파일 이름을 나타냅니다 .-exec

답변2

노력하다:

for i in `find . -type f -name "*.png"`
do
  optipng -o7 "$i"
done

테스트하지는 않았지만 그렇게 작동해야 합니다. 테스트해야 하는 경우 이 줄을 변경하여 올바른 파일을 얻었는지 확인할 optipng -o7 $i수 있습니다.echo $i

관련 정보