images/
저는 64비트 Debian 8.1 VirtualBox 시스템에 MediaWiki 1.25.2를 설치했고, 해당 설치에서 내 DropBox로 디렉토리를 업로드할 수 있기를 원합니다 . 나는 천박한 사람이기 때문에 optipng
DropBox가 너무 꽉 차서 더 많은 저장 공간을 지불해야 하는 일이 없도록 이미지 디렉터리에 있는 PNG를 최적화하여 이미지 디렉터리의 크기를 최소화하려고 노력하고 있습니다 . 내 위키에는 현재 내가 업로드한 182개의 PNG가 있습니다(그리고 위키에 있는 원본 PNG 및 SVG의 썸네일인 100개 이상의 다른 썸네일 포함). 따라서 optipng -o7 <filename>
이를 수동으로 실행하는 것은 매우 지루할 것입니다.
그래서 여기서 묻고 싶습니다. 이 작업을 자동으로 수행하도록 bash 스크립트를 어떻게 작성할 수 있습니까? 이제 나는 이 작업을 수행하는 방법에 대한 몇 가지 퍼즐을 알고 있습니다. 예를 들어 프로그램이 find
지정된 위치에 지정된 파일 확장자를 가진 파일 목록을 생성할 수 있다는 것을 알고 있습니다(예: 모든 파일이 PNG 로 무작위로 나열되는 디렉터리 sudo find . -type f -name "*.png"
에서 실행 ). , 하지만 해당 프로그램을 사용하여 해당 디렉터리와 관련된 모든 파일 이름이 포함된 텍스트 파일(예: )을 만드는 방법을 모르겠습니다 . 또한 텍스트 파일에 나열된 PNG를 최적화하는 방법도 모르겠습니다 .images/
/var/lib/mediawiki/images
f/f1/Frugalware_Linux_screenshot.png
optipng
답변1
find
여기에서 사용하세요 :
find (...your filters ...) -exec optipng -o7 '{}' +
가능한 한 +
많은 결과를 인수로 사용하려고 시도한다는 점에 유의하십시오 . 프로그램이 여러 파일을 인수로 허용하므로 괜찮습니다. 이는 명령의 마지막 매개변수인 경우에만 작동합니다 . 다른 옵션find
optipng
+
-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