Arquivo não executa [RESOLVIDO]

1. Arquivo não executa [RESOLVIDO]

Joao
Cr4mmer

(usa Ubuntu)

Enviado em 06/05/2010 - 22:14h

Boa noite pessoal, peguei na internet um script que converte os nomes dos arquivos de minúsculo para maiúsculo:
#!/bin/bash
for arquivo in *; do
OLD=$arquivo
NEW=`echo $OLD|tr '[:upper:]' '[:lower:]'`
mv -f $OLD $NEW 2>/dev/null
done

salvei como script.sh
Coloquei ele na pasta onde se encontra os arquivos, no caso é músicas, preciso converter o nome de todos para maiúsculo, porém na hora de rodar o script ele da erro no interpretador bash:

[email protected]:/home/marcelo/Documentos/musicas# ls -l script.sh
-rwxrwxrwx 1 marcelo marcelo 128 2010-05-06 09:19 script.sh
[email protected]:/home/marcelo/Documentos/musicas# ./script.sh
bash: ./script.sh: /bin/bash^M: interpretador inválido: Arquivo ou diretório não encontrado

Como podem ver até dei permissão 777 para o arquivo porém nada de rodar.
Alguém sabe o que pode ser ?
Obrigado !



  


2. MELHOR RESPOSTA

Perfil removido
removido

(usa Nenhuma)

Enviado em 07/05/2010 - 19:22h

Se os nones dos arquivos originais contiverem espaços o script não funcionará corretamnte...




#!/bin/bash

# Por ./.ronin
# http://wolferineblues.com

ls *.[Mm][Pp]3 | rename 's/ /_/g'

for OLD in $(ls *.[Mm][Pp]3); do

NEW=$(echo $OLD | tr '[:lower:]' '[:upper:]')
echo $OLD | rename 's/'$OLD'/'$NEW'/g'

done

ls *.[Mm][Pp]3 | rename 's/_/ /g'

exit

3. Re: Arquivo não executa [RESOLVIDO]

Renato Carneiro Pacheco
renato_pacheco

(usa Debian)

Enviado em 06/05/2010 - 23:54h

Abra o arquivo com o editor vi e digite isso lá dentro:

:set fileformat=unix

Salve e saia:

:x

Pronto. Execute o seu script d novo.


4. Re: Arquivo não executa [RESOLVIDO]

Jayson Santos dos Reis
jayson

(usa Ubuntu)

Enviado em 07/05/2010 - 00:06h

Ou também você pode executar isso.
sed -i'' 's/^M$//' script.sh
Abraço


5. Shell

Joao
Cr4mmer

(usa Ubuntu)

Enviado em 07/05/2010 - 00:37h

Renato,

:set fileformat=unix

O que esse comando faz na verdade ?? Coloquei ele no topo porém usei o editor nano.
na hora de executar veja:
laptop:/home/marcelo/Documentos/musicas# ./script.sh
./script.sh: linha 1: :set: comando não encontrado
'/script.sh: linha 3: erro de sintaxe próximo do `token' não esperado `do
'/script.sh: linha 3: `for arquivo in *; do



6. Re: Arquivo não executa [RESOLVIDO]

Renato Carneiro Pacheco
renato_pacheco

(usa Debian)

Enviado em 07/05/2010 - 01:00h

Fera, isso é um comando do vi e não comando d sehll. Tem q ser o vi pra esse comando dar certo, pois ele converte os caracteres ^M (Enter no modo DOS) para Enter no modo Unix.


7. shell

Joao
Cr4mmer

(usa Ubuntu)

Enviado em 07/05/2010 - 01:04h

Ah sim amigo... Veja eu abri ele pelo vi em cada linha tinha ^M, posso apagar ?? Porém não encontrei como faz para salvar o arquivo pelo vi.


8. Re: Arquivo não executa [RESOLVIDO]

Marcos Paulo Ferreira
Daemonio

(usa Slackware)

Enviado em 07/05/2010 - 01:30h

O pacheco postou:

Salve e saia:
:x

Só digitar o :x no vi.

t+


9. Re: Arquivo não executa [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 07/05/2010 - 16:29h

Se for para converter apenas mp3s faça assim no incremento do loop:

for arquivo in $(ls *.[Mm][Pp]3); do ....


Assim o seu script não renomeará outros tipos de arquivo e a si próprio caso esteja na mesma pasta que os mp3s.

E esse perigoso mv...

ls $OLD | rename 's/'$OLD'/'$NEW'/g'

acho bem mais seguro do que mover o arquivo original.

E um

cat -A script.sh | sed 's/^M//g' >> script2.sh

Também vai limpar os caracteres DOS do arquivo script.sh escrevendo no arquivo script2.sh




10. Re: Arquivo não executa [RESOLVIDO]

Joao
Cr4mmer

(usa Ubuntu)

Enviado em 07/05/2010 - 17:00h

Então, consegui aqui porém não aumentou a letra para maiúsculo.

#!/bin/bash
for arquivo in $(ls *.[Mm][Pp]3); do
OLD=$arquivo
NEW=`echo $OLD|tr '[:upper:]' '[:lower:]'`
ls $OLD | rename 's/'$OLD'/'$NEW'/g'
done
cat -A script.sh | sed 's/^M//g' >> script2.sh


11. Re: Arquivo não executa [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 07/05/2010 - 17:48h

Troque esta linha...
NEW=$(echo $OLD | tr [:lower:] [:upper:])


12. Re: Arquivo não executa [RESOLVIDO]

Joao
Cr4mmer

(usa Ubuntu)

Enviado em 07/05/2010 - 18:10h

Ele rodou porém não alterou veja no terminal como fica:

ls: impossível acessar John.mp3: Arquivo ou diretório não encontrado




01 02