como usar o comado find para mover um arquivo e a pasta desse arquivo? [RESOLVIDO]

1. como usar o comado find para mover um arquivo e a pasta desse arquivo? [RESOLVIDO]

Leomar de Oliveira
leoCCB

(usa Slackware)

Enviado em 05/03/2021 - 22:17h

Explico melhor. Tenho varias músicas espalhadas pelo computador, fruto de salvar pendrives, celulares, outros HDs, etc. Agora quero criar uma pasta de Música, e com o comando find procurar os arquivos *.mp3. Até aí é fácil. O que eu quero (por curiosidade e motivos didáticos) e que a pasta onde a música encontrada está seja criada dentro do diretório "Música". Por exemplo, o find achou um monte de arquivos *.mp3 dentro de uma pasta chamada "Anos-80". O que eu quero é que essa pasta seja movida para dentro da "Músicas", criando a estrutura "Músicas/Anos-80/*.mp3 e esse processo se repetindo com a pasta Rock, aí ficaria

Músicas/
|--> Anos-80/*.mp3
|--> Rock/*.mp3

E assim por diante

Já falaram aqui que o shel faz até um cafézinho pra gente, se souber pedir com jeitinho kkkk. Alguma sugestão?


  


2. MELHOR RESPOSTA

Ryuk Shinigami
Ryuk

(usa Nenhuma)

Enviado em 06/03/2021 - 10:29h

Testa assim:
#!/bin/bash

dir_orig=/caminho/para/pasta-origem
dir_dest=/caminho/para/pasta-musicas

IFSOLD=$IFS
IFS=$'\n'

for arq in $(find ${dir_orig} -iname '*.mp3'); do
last_dir=$(dirname ${arq} | awk -F'/' '{print $NF}')
if [ ! -d "${dir_dest}/${last_dir}" ]; then
mkdir ${dir_dest}/${last_dir}
fi
cp ${arq} ${dir_dest}/${last_dir}
done

IFS=$IFSOLD


3. Re: como usar o comado find para mover um arquivo e a pasta desse arquivo?

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 06/03/2021 - 01:55h

Leo CCB escreveu:

Explico melhor. Tenho varias músicas espalhadas pelo computador, fruto de salvar pendrives, celulares, outros HDs, etc.
Agora quero criar uma pasta de Música, e com o comando find procurar os arquivos *.mp3. Até aí é fácil. O que eu quero (por curiosidade e motivos didáticos) e que a pasta onde a música encontrada está seja criada dentro do diretório "Música". Por exemplo, o find achou um monte de arquivos *.mp3 dentro de uma pasta chamada "Anos-80". O que eu quero é que essa pasta seja movida para dentro da "Músicas", criando a estrutura "Músicas/Anos-80/*.mp3 e esse processo se repetindo com a pasta Rock, aí ficaria

Músicas/
|--> Anos-80/*.mp3
|--> Rock/*.mp3

E assim por diante

Já falaram aqui que o shel faz até um cafézinho pra gente, se souber pedir com jeitinho kkkk. Alguma sugestão?

Como diria "jack", o esquartejador, Vamos por partes..... :)
O comando 001:
find DIR_INICIAL/  -iname "*.mp3" -exec dirname {} \;|sort -u > SAIDA_001.txt 

Mostra todos diretórios onde tem arquivo mp3, com o caminho absoluto (completo).
------------------------------------------------

Não testei....Mas, a ideia é a seguinte:
Pegar o ultimo campo de cada linha, e criar o diretório,
Exemplo: linha do comando 001:
/media/adminq/persistence/ALL/BACKUP/HTML/AUDIOS/PASSAROS
Ultimo campo: PASSAROS

mv /media/adminq/persistence/ALL/BACKUP/HTML/AUDIOS/PASSAROS/*.mp3 PASSAROS/

Simulação:
awk -F"/" '{cmd="mkdir","Músicas/"$NF;system(cmd)}' SAIDA_001.txt # Cria o dir com o ultimo campo
awk -F"/" '{cmd="mv ",$0"/*.mp3","Músicas/"$NF;system(cmd)}' SAIDA_001.txt # Move os arquivos

Deve funcionar.....
Dica para testes:
Troque "cmd=" por print, e elimine o ";system(cmd)", cheque a saída.
awk -F"/" '{print "mkdir","Músicas/"$NF}' SAIDA_001.txt
______________________________________________________________________
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: como usar o comado find para mover um arquivo e a pasta desse arquivo? [RESOLVIDO]

leandro peçanha scardua
leandropscardua

(usa Ubuntu)

Enviado em 06/03/2021 - 09:42h

Como estou no cel aqui n posso testar, mas seria interessante saber como o find se comportaria se a pasta onde ele estivesse pesquisando fosse movida durante a execução. Dependendo poderia ser melhor rodar ls | xarg mv




  



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts