Script que separa arquivos de Acordo com nome da pasta de destino [RESOLVIDO]

1. Script que separa arquivos de Acordo com nome da pasta de destino [RESOLVIDO]

Rodrigo C
cunhaigo23

(usa Ubuntu)

Enviado em 07/07/2021 - 15:07h

Saudações, preciso de um Script que separa arquivos de Acordo com nome da pasta de destino. Exemplo se na pasta de destino existir uma pasta chamada Paulo ela procura na pasta de origem aonde estão localizados os arquivos para separar arquivos que tenham o nome Paulo.

Origem

Paulo24567.mp4

Destino

Pasta Paulo

Muito obrigado


  


2. MELHOR RESPOSTA

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 07/07/2021 - 20:26h


cunhaigo23 escreveu:
Saudações, preciso de um Script que separa arquivos de Acordo com nome da pasta de destino. Exemplo se na pasta de destino existir uma pasta chamada Paulo ela procura na pasta de origem aonde estão localizados os arquivos para separar arquivos que tenham o nome Paulo.
Origem:Paulo24567.mp4
Destino:Pasta Paulo
Muito obrigado

Boa noite Cunha, veja se é isso:
#!/usr/bin/env bash

#Defina dir_orig e dir_dest
dir_orig='//';
ls -1R ${dir_orig}*.* > arqs_origem.txt
dir_dest='//'

for dir in $(ls -1d ${dir_dest}*/);do #pega somente as pastas
nome=$(awk -F"/" '{print $(NF-1)}' <<< "${dir}"); #pega o penúltimo campo
if grep "${nome}" arqs_origem.txt > nome.txt;then #busca por 'nome' em arqs_origem.txt, se 'true', copia
echo -e "Copia arquivos: "$(cat nome.txt)"\nPara: ${dir}\n"; # Linha para testes.....estando ok, "descomente" a linha abaixo
# cp "$(cat nome.txt)" ${dir}
fi
done


É 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.

______________________________________________________________________


3. Re: Script que separa arquivos de Acordo com nome da pasta de destino [RESOLVIDO]

Rodrigo C
cunhaigo23

(usa Ubuntu)

Enviado em 08/07/2021 - 05:58h


Muito obrigado, vou fazer todos os testes


4. Re: Script que separa arquivos de Acordo com nome da pasta de destino [RESOLVIDO]

Rodrigo C
cunhaigo23

(usa Ubuntu)

Enviado em 08/07/2021 - 06:34h


Não consegui fazer com que o diretórios de destino organizassem em suas subpastas os arquivos de origem com nomes similares. Assim que eu criar uma nova subpasta no destino com um nome ele iria procurar algum arquivo na origem com nome similar e copiar


5. Re: Script que separa arquivos de Acordo com nome da pasta de destino [RESOLVIDO]

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 08/07/2021 - 18:52h


cunhaigo23 escreveu:


Não consegui fazer com que o diretórios de destino organizassem em suas subpastas os arquivos de origem com nomes similares.
Assim que eu criar uma nova subpasta no destino com um nome ele iria procurar algum arquivo na origem com nome similar e copiar

Cunha, atente se ao detalhe,
dir_orig e dir_dest
devem terminar com '/'
---------------------------------------------------------------------------------------------------------------
Note que o script sugerido "pega" somente o 1º nível de 'sub-pastas', do ${dir_dest}
exemplo:
ls -1d /media/adminq/Backup/*/
/media/adminq/Backup/ALL/
/media/adminq/Backup/Curso_C/
/media/adminq/Backup/Diversos_00/
/media/adminq/Backup/Explosions_in_the_Sky/
/media/adminq/Backup/imagens/
/media/adminq/Backup/JAVA/
....
E somente os arquivos de ${dir_orig}, não recursivo.


______________________________________________________________________
Importante: lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p'
Att.: Marcelo Oliver
______________________________________________________________________



6. Re: Script que separa arquivos de Acordo com nome da pasta de destino [RESOLVIDO]

Rodrigo C
cunhaigo23

(usa Ubuntu)

Enviado em 11/07/2021 - 12:57h


Muito obrigado mesmo, vou fazer mais testes


7. Re: Script que separa arquivos de Acordo com nome da pasta de destino [RESOLVIDO]

Rodrigo C
cunhaigo23

(usa Ubuntu)

Enviado em 11/07/2021 - 14:07h


Amigo muito obrigado mesmo, parabéns deu certo você sabe muito.


8. Re: Script que separa arquivos de Acordo com nome da pasta de destino [RESOLVIDO]

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 11/07/2021 - 19:18h


Por nada Cunha, precisando.....
Se não for pedir, Marque o tópico como "Resolvido", e escolha a "Melhor Resposta"...
Dessa forma sou pontuado, o que incentiva o compartilhamento de conhecimentos....

______________________________________________________________________
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.


______________________________________________________________________



9. Re: Script que separa arquivos de Acordo com nome da pasta de destino [RESOLVIDO]

Rodrigo C
cunhaigo23

(usa Ubuntu)

Enviado em 12/07/2021 - 11:45h



Fiz novos testes em diretórios com nomes longos e não consegui, tu poderia me ajudar?


#!/usr/bin/env bash

#Defina dir_orig e dir_dest
dir_orig='/media/storage/01\ BR/00\ MATERIAIS\ RECEBIDOS\ BR/';
ls -1R ${dir_orig}*.* > arqs_origem.txt
dir_dest='/media/storage/01\ BR/00\ PROGRAMAS/'

for dir in $(ls -1d ${dir_dest}*/);do #pega somente as pastas
nome=$(awk -F"/" '{print $(NF-1)}' <<< "${dir}"); #pega o penúltimo campo
if grep "${nome}" arqs_origem.txt > nome.txt;then #busca por 'nome' em arqs_origem.txt, se 'true', copia
echo -e "Copia arquivos: "$(cat nome.txt)"\nPara: ${dir}\n"; # Linha para testes.....estando ok, "descomente" a linha abaixo
cp -r "$(cat nome.txt)" ${dir}
#mv "$(cat nome.txt)" ${dir}
fi
done