Script com variáveis com nome em branco

1. Script com variáveis com nome em branco

Carlos Eduardo
cebaldocchi

(usa Ubuntu)

Enviado em 30/05/2015 - 08:39h

Galera, tenho um script que uso pra diminuir o tamanho das imagens quando quero enviar por e-mail ou por na web.
O problema é que o script não roda se tiver espaços em branco no nome dos arquivos.

Primeiro ele pega todos arquivos de imagem do diretório e cria um arquivo com os nomes, e depois ele roda o comando "convert".
Porém se o nome do arquivo tem um espaço em branco ex: foto natal.jpg - ele dá erro.
Alguém podem e ajudar como resolver?


#!/bin/sh

echo "Digite a resolucao das fotos desejada: [1200x900] [1600x900] [2200x1650]:"
read resolucao

# CRIA O ARQUIVO ARCH.TXT
ls *.JPG *.jpg *.PNG *.png > arch.txt

mkdir mini

for i in `cat arch.txt`; do
convert "$i" -resize $resolucao "p$i"
done

mv p* mini/

rm arch.txt



  


2. Re: Script com variáveis com nome em branco

takedown
T4K3D0WN

(usa Ubuntu)

Enviado em 30/05/2015 - 10:40h

#!/bin/sh

echo "Digite a resolucao das fotos desejada: [1200x900] [1600x900] [2200x1650]:"
read resolucao

# CRIA O ARQUIVO ARCH.TXT
ls *.JPG *.jpg *.PNG *.png |sed "s/ /*/g"> arch.txt
mkdir mini
for i in `cat arch.txt`; do
convert "$i" -resize $resolucao "p$i"
done
mv p* mini/
rm arch.txt


vai subistirui o espaco por * e assim vai funcionar :D





3. Re: Script com variáveis com nome em branco

Carlos Eduardo
cebaldocchi

(usa Ubuntu)

Enviado em 30/05/2015 - 10:57h

amigo, entendi a sua solução. Até conhecia o comando sed e gostei da forma que empregou.
Porém com o seu comando, ele vai gerar a lista de arquivos .png e .jpg colocando o nome dos arquivos que tenham espaço em branco um asterisco.

O problema é que o nome original do arquivo vai continuar com o espaço em branco, e quando o comando "convert" for rodar, vai apontar pra um arquivo vazio.

No momento eu achei um comando pra trocar o nome dos arquivos que substitui o espaço em branco por um underline. (A idéia é semelhante a sua, porém ele renomeia o arquivo). Ficou assim:

#!/bin/sh

echo "Digite a resolucao das fotos desejada: [1200x900] [1600x900] [2200x1650]:"
read resolucao

#REMOVE ESPACOS EM BRANCO DO NOME DO ARQUIVO:
ls -w1 *.* | while read line; do mv "$line" "$(echo $line | tr '\ ' '_')"; done

# CRIA O ARQUIVO ARCH.TXT
ls *.JPG *.jpg *.PNG *.png > arch.txt

mkdir mini

for i in `cat arch.txt`; do
convert $i -resize $resolucao mini/$i
done

rm arch.txt



4. Resolvido!

Carlos Eduardo
cebaldocchi

(usa Ubuntu)

Enviado em 11/11/2015 - 02:59h


#!/bin/sh

echo "Digite a resolucao das fotos desejada: [1200x900] [1600x900] [2200x1650]:"
read resolucao

#REMOVE ESPACOS EM BRANCO DO NOME DO ARQUIVO:
ls -w1 *.* | while read line; do mv "$line" "$(echo $line | tr '\ ' '_')"; done

# CRIA O ARQUIVO ARCH.TXT
ls *.JPG *.jpg *.PNG *.png > arch.txt

mkdir mini

for i in `cat arch.txt`; do
convert $i -resize $resolucao mini/$i
done

rm arch.txt







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts