Tenta colocar $MP3 entre aspas duplas, assim: "$MP3".
Abraços!
Versão Imprimível
Tenta colocar $MP3 entre aspas duplas, assim: "$MP3".
Abraços!
cara...Citação:
Postado originalmente por Stéfano
por curiosidade e pq eu não me lembro como resolver os poréns de dados com espaços em variáveis, resolvi testar, mas não obtive sucesso:
cenário: /mp3/Rock Nacional
$ cd /mp3
$ MP3=`find "Rock Nacional" -name *.mp3`
$ du -sh MP3 - erro por causo dos espaços
$ du -sh "$MP3"
du: impossível acessar `(ele considerou os dados da variável como um único endereço)`: arquivo ou diretório não encontrado
mas tem outra questão que não foi levada em consideração:
se adentrarmos em um diretório e digitarmos:
du -sh
ele nos trará o tamanho total ocupado pelos arquivos deste diretório, mas se usarmos o comando:
du -sh *
ele nos trará o tamanho de cada arquivo no diretório.
e atentando para estas informações temos a seguinte conclusão:
a variável MP3 terá as informações:
diretorio/musica01.mp3
......
diretorio/musicaN.mp3
se o comando "du" ler a variável como queremos, ele nos trará o tamanho de cada arquivo, e não a soma de todos.
a meu ver para termos a soma de todos é preciso criar um script que colete os dados do du e some, mas antes é preciso resolver a questão dos espaços...
valeu
seus pobremas se acabaram-se
chegou o mais novo revolucionário
Mostrator Automatizator da Ocupação de Arquivos Especificados (podre pacarai mais tá valendo)
o tal do curioso é o caráleo mesmo... encontrei uma solução para o seu problema mas ainda nao encontrei para o meu.. heheeh
fiz este script e é só adequar a tua situação:
(se alguém ganhar dinheiro com este script eu quero uma garrafa de Véio Barreiro de presente)Citação:
#!/bin/bash
# Variável que será responsável por conter os valores somados
COUNT=0
# Busca os arquivos com extensão mp3 no diretório "Rock Nacional" e lista somente a primeira coluna
for i in `find Rock\ Nacional -name *.mp3 -exec du {} \; | awk -F " " '{print $1}'`; do
# Soma o valor de cada arquivo a variável COUNT
let "COUNT=COUNT+$i"
done
# Os valores dos arquivos estão expressos em bytes
# O comando abaixo transforma bytes em Mbytes
let "COUNT=COUNT/1024"
# Mostra o valor de COUNT
echo $COUNT"MB"
valeu
se alguém encontrar uma forma mais fácil de somar variáveis me avisa...
galera...
encontrei um bugre no script...
atualmente ele está usando a flag "-name" no comando find, esta flag busca exatamente como for escrito, exemplo:
find -name *.mp3
e se houver um arquivo .MP3 ??
pensando desta forma é necessário trocar a flag -name por -iname, ficaria desta forma:
valeuCitação:
#!/bin/bash
# Variável que será responsável por conter os valores somados
COUNT=0
# Busca os arquivos com extensão mp3 no diretório "Rock Nacional" e lista somente a primeira coluna
for i in `find Rock\ Nacional -iname *.mp3 -exec du {} \; | awk -F " " '{print $1}'`; do
# Soma o valor de cada arquivo a variável COUNT
let "COUNT=COUNT+$i"
done
# Os valores dos arquivos estão expressos em bytes
# O comando abaixo transforma bytes em Mbytes
let "COUNT=COUNT/1024"
# Mostra o valor de COUNT
echo $COUNT"MB"