A resposta de Rui contém alguns bons conselhos,
embora ele parece ter perdido a causa real
do fracasso de seu comando.
Aparece da saída que você mostra que tem um arquivo
chamado ./12/thumbnail/The Official AndreasCY ….png
.
Quando você diz
for PNG in $(find . -name '*.png')
é como dizer
for PNG in ./12/thumbnail/112.png ./12/thumbnail/photography.png ./12/thumbnail/Christmas-01.png \ ./12/thumbnail/OA1920.png ./12/thumbnail/The Official AndreasCY ….png …
com o resultado de que ./12/thumbnail/The
, Official
e AndreasCY
ser tratado como se fossem nomes de arquivo separados -
e, como não são, você recebe o erro que recebeu.
Você deve ter muito cuidado ao usar $(…)
para gerar uma lista de nomes de arquivos -
pelo que quero dizer, evite fazer isso se for possível.
find … -exec
é uma abordagem muito melhor.
No entanto, o comando Rui não funcionará: -exec "Optimized PNG: "
falhará porque não existe tal comando como "Optimized PNG: "
.
Sugiro que você guarde as seguintes partes da sua resposta original e da resposta de Rui:
#!/bin/sh cd /var/www/html/wp-content/uploads/2014 (You don’t really need the “/” at the end.) find . -name '*.png' -type f …
e, em seguida, termine com uma das seguintes opções:
-
-exec pngquant --ext .png --force 256 {} \; -exec echo "Optimized PNG:" {} \;
-
-exec pngquant --ext .png --force 256 {} \; -printf "Optimized PNG: %p\n"
-
-exec sh -c 'pngquant --ext .png --force 256 "$1"; echo "Optimized PNG: $1"' sh {} \;
ou -
-exec myscript {} \;
ondemyscript
é#!/bin/sh pngquant --ext .png --force 256 "$1" echo "Optimized PNG: $1"
Note que você deve sempre citar as variáveis do shell
(por exemplo, "$PNG"
e "$1"
) a menos que você tenha um bom motivo para não
e você está certo de que sabe o que está fazendo.
Por contraste, enquanto chaves (por exemplo, ${PNG}
) podem ser importantes,
eles não são tão importantes quanto as citações.
E, em princípios gerais, sugiro que você use #!/bin/sh
a menos que você esteja explicitamente escrevendo um script que dependa de recursos bash,
e não funcionará com um shell compatível com POSIX - e eu aconselho contra isso.