Criar pastas de acordo com nomes de arquivos

1. Criar pastas de acordo com nomes de arquivos

Leticia Deieno Tadeu
leticiadeieno

(usa CentOS)

Enviado em 16/06/2018 - 22:02h

Olá pessoal, tudo bem ?

Preciso de ajuda para criar um script que leia o nome do arquivo e crie pastas de acordo com nome, por exemplo:
Nome do arquivo: 01-19-Adele-Daydreamer.mp3

O script deverá criar uma pasta com o nome do álbum. Dentro da pasta do álbum, criar uma pasta com o nome do artista e mover o arquivo. O caminho das pastas ficaria da seguinte forma:
19\Adele\Daydreamer.mp3

Notei que o nome do álbum e o nome do artista são separados por "-" em todos os arquivos e o nome do álbum sempre vem primeiro que o nome do artista.

Muito obrigada !!






  


2. Re: Criar pastas de acordo com nomes de arquivos

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 16/06/2018 - 23:26h

leticiadeieno escreveu:

Olá pessoal, tudo bem ?

Preciso de ajuda para criar um script que leia o nome do arquivo e crie pastas de acordo com nome, por exemplo:
Nome do arquivo: 01-19-Adele-Daydreamer.mp3

O script deverá criar uma pasta com o nome do álbum.
Dentro da pasta do álbum, criar uma pasta com o nome do artista e mover o arquivo.
O caminho das pastas ficaria da seguinte forma:
19\Adele\Daydreamer.mp3

Notei que o nome do álbum e o nome do artista são separados por "-" em todos os arquivos e o nome do álbum sempre vem primeiro que o nome do artista.
Muito obrigada !!


Boa noite Leticia.
Os arquivos "mp3" estão atualmente em uma pasta especifica ou "todos espalhados"?
Não entendi:
Notei que o nome do álbum e o nome do artista são separados por "-" em todos os arquivos e o nome do álbum sempre vem primeiro que o nome do artista.
Todos estão neste formato?
01-19-Adele-Daydreamer.mp3 

Album: 19
Artista: Adele
Musica: Daydreamer.mp3
E o "01", musica 01 de 19 musicas . . .

Eu seguiria a seguinte lógica:
Liste os arquivos e salve em um "temporário"
Faça um laço no temporário,
Leia linha a linha,
Gere um array com cada campo da linha,
#partindo do principio que os campos são os que citei...
# ????: 01 array[0]
#Album: 19 array[1]
#Artista: Adele array[2]
#Musica: Daydreamer.mp3 array[3]

mkdir array[1]
mkdir array[2]
mv array[3] array[2]
Encerre o laço

Att.:
Marcelo Oliver


3. Re: Criar pastas de acordo com nomes de arquivos

Leticia Deieno Tadeu
leticiadeieno

(usa CentOS)

Enviado em 16/06/2018 - 23:31h

Olá Marcelo,

Sim, todos os arquivos estão nesse formato:

01-19-Adele-Daydreamer.mp3, tenho outros exemplos:

01-21-Adele-Rolling_in_the_Deep.mp3
01-A_Hard_Days_Nigth-The_Beatles-A_Hard_Days_Night.mp3

O "01" é o número da faixa, será descartado, não será considerado

Esses arquivos vão estar em uma pasta "musicas".

Quis dizer que o nome do artista e o nome do álbum estão entre hífens em todos os arquivos mp3


4. Re: Criar pastas de acordo com nomes de arquivos

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 17/06/2018 - 00:22h

leticiadeieno escreveu:

Olá Marcelo,

Sim, todos os arquivos estão nesse formato:

01-19-Adele-Daydreamer.mp3, tenho outros exemplos:

01-21-Adele-Rolling_in_the_Deep.mp3
01-A_Hard_Days_Nigth-The_Beatles-A_Hard_Days_Night.mp3

O "01" é o número da faixa, será descartado, não será considerado

Esses arquivos vão estar em uma pasta "musicas".
Quis dizer que o nome do artista e o nome do álbum estão entre hífens em todos os arquivos mp3


Vamos Lá....
Alterei a "lógica" que tinha proposto . . .
#!/bin/bash
DIR="musicas"
for arq in $(ls -1 ${DIR}/mp3);do
arq=$(sed 's/-/ /g' <<< "$arq");
read -a cmp <<< "$arq"
if [[ $(${#cmp[@]}) -eq 4 ]];then
echo "[[ ! -e ${cmp[1]} ]] && mkdir ${cmp[1]};"
echo "[[ ! -e ${cmp[1]}//${cmp[2]} ]] && mkdir ${cmp[1]}/${cmp[2]};"
echo "mv ${cmp[3]} ${cmp[1]}/${cmp[2]};"
else
echo -e "Fora do Padrão\n";
fi
done

Coloquei o "echo", para efeito de "TESTES",
Execute inicialmente dessa forma, confira o resultado na tela e depois . . .
É só tirar o echo e as aspas.

Att.:
Marcelo Oliver




5. Re: Criar pastas de acordo com nomes de arquivos

Leticia Deieno Tadeu
leticiadeieno

(usa CentOS)

Enviado em 17/06/2018 - 00:27h

Muito obrigada Marcelo !!
Vou testar aqui e dou um retorno :D


6. Re: Criar pastas de acordo com nomes de arquivos

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 17/06/2018 - 00:50h

leticiadeieno escreveu:

Muito obrigada Marcelo !!
Vou testar aqui e dou um retorno :D


Ok!!
Qquer duvida, poste . . .
Coloquei um condicional para testar o padrão...
Se não estiver no padrão, com quatro campos, não executa os comandos...
E também para verificar se a pasta já existe . . .

T+









Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts