segunda-feira, 4 de agosto de 2014

Listando Arquivos com o Caminho Completo - Linux

E eis que num belo dia, você quer fazer uma lista de arquivos de um diretório, por exemplo o diretório de Músicas.

Você quer que seja mostrado e listado em arquivo ou mesmo em tela o caminho completo do mesmo.

Buscas e mais buscas, pesquisas, lendo os manuais do ls e mesmo assim, nenhum resultado adequado ao que eu queria.

Então em um determinado momento, eu encontro a linha de comando que resolveu minha demanda.

Vamos ao problema em si:

Listar os mp3 de um diretório para montar um playlist com a discografia da banda, mas que tivesse o referencial do caminho absoluto dos arquivos.

Dentro do diretório de Músicas (/home/usuario/Músicas/banda/), usei o seguinte comando:

find "`pwd`" -name *mp3

O resultado foi algo assim:

/home/usuario/Música/Fear Factory/Mechanize/02 Industrial Discipline.mp3
/home/usuario/Música/Fear Factory/Mechanize/07 Controlled Demolition.mp3
/home/usuario/Música/Fear Factory/Mechanize/05 Christploitation.mp3
/home/usuario/Música/Fear Factory/Mechanize/10 Final Exit.mp3
/home/usuario/Música/Fear Factory/Mechanize/01 Mechanize.mp3
/home/usuario/Música/Fear Factory/Mechanize/08 Designing The Enemy.mp3
/home/usuario/Música/Fear Factory/Mechanize/04 Powershifter.mp3
/home/usuario/Música/Fear Factory/Mechanize/09 Metallic Division.mp3
/home/usuario/Música/Fear Factory/Mechanize/06 Oxidizer.mp3
/home/usuario/Música/Fear Factory/Mechanize/03 Fear Campaign.mp3

Saiu todos os discos na lista, mas deixei somente um neste post como exemplo e para que não fique tão extenso.

A saída padrão do comando é a tela. Eu redirecionei para um arquivo usando o mesmo comando apontando para o arquivo destino:

find "`pwd`" -name *mp3 > listageral.pls

Gerou o arquivo com as músicas e tudo direitinho. Mas ficou fora de ordem como é mostrado no exempĺo acima.
A preguiça é grande demais para ficar organizando na mão. Então depois que o arquivo estava pronto, lá foi outro comando legal pra organizar em ordem alfabética o arquivo:

sort listageral.pls > listageral1.pls

Assim o arquivo destino fica em ordem alfabética, como abaixo:

/home/usuario/Música/Fear Factory/Mechanize/01 Mechanize.mp3
/home/usuario/Música/Fear Factory/Mechanize/02 Industrial Discipline.mp3
/home/usuario/Música/Fear Factory/Mechanize/03 Fear Campaign.mp3
/home/usuario/Música/Fear Factory/Mechanize/04 Powershifter.mp3
/home/usuario/Música/Fear Factory/Mechanize/05 Christploitation.mp3
/home/usuario/Música/Fear Factory/Mechanize/06 Oxidizer.mp3
/home/usuario/Música/Fear Factory/Mechanize/07 Controlled Demolition.mp3
/home/usuario/Música/Fear Factory/Mechanize/08 Designing The Enemy.mp3
/home/usuario/Música/Fear Factory/Mechanize/09 Metallic Division.mp3
/home/usuario/Música/Fear Factory/Mechanize/10 Final Exit.mp3









Com o tempo tentarei montar um shell script com os parâmetros apropriados para poder gerar listas de arquivos e diretórios de forma mais simples.

Para complementar, estes outros comandos podem ajudar também, mas ainda não os usei muito bem:

Use este para diretórios:

ls -d -1 $PWD/**

Este para arquivos:

ls -d -1 $PWD/*.*

Este para qualquer coisa:

ls -d -1 $PWD/**/*

Obs: estes últimos colocados como estão trabalham com arquivos/diretórios onde os nomes não são compostos por espaço. Por isso no comando que utilizei o pwd está com aspas simples e também aspas duplas, para pode entender o caracter espaço.

No momento, atendeu minha necessidade. Espero que isso possa ajudar alguém com uma necessidade semelhante.

Fontes de referência:

http://www.zsh.org/mla/users/2002/msg00033.html

http://stackoverflow.com/questions/246215/how-can-i-list-files-with-their-absolute-path-in-linux


Nenhum comentário: