Exibir relação de arquivos sem o caminho [RESOLVIDO]

1. Exibir relação de arquivos sem o caminho [RESOLVIDO]

Marco Capella
MarcoC

(usa Outra)

Enviado em 28/03/2021 - 00:53h


ola
tenho uma pasta com varios arquivos mp3
exemplo
primeiro arquivo de musica.mp3
e
segundo_arquivo_de_musica.mp3

ao executar a rotina abaixo

ls /home/pi/Music/*.mp3 > /home/pi/Music/lista
Infolista=$(cat /home/pi/Music/lista | more)
rel=${Infolista##*/}
echo "$rel"

so aparece
segundo_arquivo_de_musica.mp3
tem como resolver esse problema do nome ter espaços (acho que o problema e esse ne)?

Desde ja, muito obrigado pela atenção.


  


2. MELHOR RESPOSTA

Perfil removido
removido

(usa Nenhuma)

Enviado em 28/03/2021 - 11:24h

Também pode usar o Mapfile (ou Readarray, é o mesmo), builtin do Bash..
Nesse caso, é melhor você trabalhar com arrays, se possível..


mapfile -t Infolista <<<"$( ls /home/pi/Music/*.mp3 )"

echo "${Infolista[@]##*/}"



Ou se tiver criado um arquivo com a lista de nomes dos mp3:
readarray -t Infolista </home/pi/Music/lista

echo "${Infolista[@]##*/}"


Ao invés de usar um echo, pode usar um printf para formatar a saída da lista com um item por linha:
printf '%s\n' "${Infolista[@]##*/}" 


3. Re: Exibir relação de arquivos sem o caminho [RESOLVIDO]

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 28/03/2021 - 02:40h


MarcoC escreveu:


ola
tenho uma pasta com varios arquivos mp3
exemplo
primeiro arquivo de musica.mp3
e
segundo_arquivo_de_musica.mp3

ao executar a rotina abaixo

ls /home/pi/Music/*.mp3 > /home/pi/Music/lista
Infolista=$(cat /home/pi/Music/lista | more)
rel=${Infolista##*/}
echo "$rel"

so aparece
segundo_arquivo_de_musica.mp3
tem como resolver esse problema do nome ter espaços (acho que o problema e esse ne)?

Desde ja, muito obrigado pela atenção.

Bom dia!
Segue sugestão:
exec 3< <(ls -1 /home/pi/Music/*.mp3) #Coloca a saída do ls -1 .... no descritor de arquivos 3
while read -u 3 line;do
echo \""${line// /\\ }"\" #escapa os espaços '\ '
done
exec 3<&- #Fecha o descritor 3

É Isso.....

______________________________________________________________________
Importante: lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p'
Att.: Marcelo Oliver
______________________________________________________________________
Nota de esclarecimento:
O comando: lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p',
faz parte da minha assinatura.
O qual, "filtra" a página: "https://www.vivaolinux.com.br/termos-de-uso/",
Mostrando o seguinte:

Se você sanou sua dúvida ou resolveu um problema a partir de um
tópico criado, é extremamente recomendável que acesse o tópico e
marque-o como "RESOLVIDO". E mais recomendável ainda que você eleja
como melhor resposta a que mais lhe ajudou.


______________________________________________________________________



4. Re: Exibir relação de arquivos sem o caminho [RESOLVIDO]

leandro peçanha scardua
leandropscardua

(usa Ubuntu)

Enviado em 28/03/2021 - 11:12h


Pra quê paginar saída no meio de um script?
Infolista=$(cat /home/pi/Music/lista | more)


5. Re: Exibir relação de arquivos sem o caminho

Marco Capella
MarcoC

(usa Outra)

Enviado em 28/03/2021 - 14:06h

Ola.

Assim funcionou

ls /home/pi/Music/*.mp3 > /home/pi/Music/lista # cria um arquivo com a lista de nomes dos mp3

# como sugerido pelo fenixdragao (muito obrigado).

readarray -t Infolista < /home/pi/Music/lista

printf '%s\n' "${Infolista[@]##*/}" # Da forma que fiz antes exibia os arquivos com o caminho, agora exibiu apenas os nomes dos arquivos (sem o caminho) como pretendo.
numero 1.mp3
numero 2.mp3
arquivo com o numero 1A.mp3
arquivo com o numero 2A.mp3
arquivo com o numero 1B.mp3
arquivo com o numero 2B.mp3

Tem como exibir 2 ou 3 nomes por linha?
numero 1.mp3 numero 2.mp3
arquivo com o numero 1A.mp3 arquivo com o numero 2A.mp3

Melhor ainda, Tem como exibir 2 ou 3 nomes por linha com controle de espaço entre nomes?
numero 1.mp3(espaço)arquivo com o numero 2A.mp3
arquivo com o numero 1A.mp3(espaço)arquivo com o
numero 2A.mp3

(espaço) = Ao escrever esse texto tentei digitar espaço 6 vezes para mostrar a ideia mas parece que o forum não permite, por isso usei (espaço).

Pessoal, muito obrigado pela ajuda.




6. Re: Exibir relação de arquivos sem o caminho [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 28/03/2021 - 21:49h

Você pode fazer isso com o printf.
Não sei se vc sabe, mas \t significa um tab, mas pode trocar por espaços em branco simples, se preferir..

printf '%s\t%s\n' "${Infolista[@]##*/}"  

ou
printf '%s    %s\n' "${Infolista[@]##*/}"  



7. Re: Exibir relação de arquivos sem o caminho [RESOLVIDO]

Marco Capella
MarcoC

(usa Outra)

Enviado em 28/03/2021 - 22:04h


Muito obrigado fenixdragao, duvida sanada.
Valeu.


8. printf '%s\t%s\n' "${Infolista[@]##*/}"

Perfil removido
removido

(usa Nenhuma)

Enviado em 28/03/2021 - 22:47h

Para alinhar as colunas, vc pode usar o `column':

printf '%s\t%s\n' "${Infolista[@]##*/}" | column -t 







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts