저는 shellscript를 처음 사용하고 필요한 작업을 수행하는 데 문제가 있습니다.
모든 * .png 이미지를 '최적화'하고 싶고 이것을 찾았 으므로 다음 과 같이 bash를 만들었습니다.
#!/bin/bash
pngnq -vf -s1 *.png
rename -nq8.png .png *-nq8*
optipng -o7 *.png
이것이하는 일은 :
pngnq -vf -s1 *.png
* png ofr 예제 Image.png를 가져와 최적화 된 Image-nq8.png라는 복사본을 craetes rename -nq8.png .png *-nq8*
Image-nq8.png를 Image.png로 만들어 이전과 동일하지만 최적화되도록합니다 (따라서 최적화 이전과 동일하게 폴더에있을 수 있음) <= 매우 중요! optipng -o7 *.png
사본을 만들지 않고 Images.png에 또 다른 최적화를 수행합니다.하지만 이제 문제가 있습니다.
콘솔에서 모든 줄을 순서대로 작성하면 폴더에서 정상적으로 작동하지만 이제 자동으로 재귀 적으로 수행해야합니다. 내 경우를 설명합니다.
참고 : 폴더를 디렉토리라고합니다.
ImagesFolder라는 폴더가 있고 내부에는 * .png가 더 많은 다른 폴더가 있으며 ImagesFolder의 모든 하위 폴더 에서이 bash를 실행하고 싶지만 어떻게 해야할지 모르겠습니다 (유닉스에서 새로 왔으며 shellscripts 등) 및 인터넷에서 찾은 결과가 작동하지 않거나 완전히 엉망이었습니다 ...
내가 가진 것을 더 잘 이해하려면 다음과 같습니다.
ImagesFolder
|-Folder1
| |- Folder12
| | |-20 images here
| |- Folder13
| | |- 10 images more here
| |- _Folder <- I have some folder names that start with '_'
| |- 5 images here
|-more images and folders and subfoldrs
이것은 구조이며 스크립트가 ImagesFolder에서 실행되기를 원합니다.
나는 for와 find로 시도했고, 콘솔에서 스크립트를 호출하는 찾기로 시도했습니다 ... 여기 스택에서 찾은 몇 가지 예제를 너무 적용하려고 시도했지만 아무것도 없었습니다 ... 아마도 내가 실제로 어떻게하는지 모르기 때문에 이 작품은 그렇게 적용 할 수 없습니다. 이 문제로 나를 도울 수 있기를 바랍니다.
정말 고맙습니다!
편집 : 스크립트를 실행하려면 ImageFolder로 이동하여 콘솔을 열고 chmod u+x name_of_my_script
하위 폴더에 실행하는 것이 문제가 될 수 있습니까? 그렇다면 문제를 해결하는 방법을 알려주시겠습니까?
bash 스크립트 :
새 파일 find_and_rename
을 만들고 다음 줄을 추가합니다.
버전 replace
#!/bin/bash
shopt -s globstar
for f in **/*png; do
pngnq -vf -s1 "$f"
# Uncomment the line below for a test run
# rename -v -n 's/^(.*)\-nq8(.*)/$1$2/' "$f"
# Comment the line below out for a test run
rename -v 's/^(.*)\-nq8(.*)/$1$2/' "$f"
optipng -o7 "$f"
done
버전 mv
#!/bin/bash
shopt -s globstar
for f in **/*png; do
pngnq -vf -s1 "$f"
# Uncomment the line below for a test run
# echo "$f => ${f//-nq8/}"
# Comment the line below out for a test run
mv "$f" "${f//-nq8/}"
optipng -o7 "$f"
done
다음을 사용하여 파일을 실행 가능하게 만드십시오.
chmod +x find_and_rename
폴더로 이동합니다 ImagesFolder
.
이 폴더에서 스크립트를 시작하십시오.
<path_to_script>/find_and_rename
예 ( pngnq
및optipng
$ find . -type f -name "*.png"
./Image-nq8.png
./sub/Image-nq8.png
./Image2-nq8.png
$ ./find_and_rename
Image2-nq8.png renamed as Image2.png
Image-nq8.png renamed as Image.png
sub/Image-nq8.png renamed as sub/Image.png
$ find . -type f -name "*.png"
./Image2.png
./sub/Image.png
./Image.png
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다