Procurar em um diretório uma lista de criterios que estão em um TXT e copia-los para outro diretório

1. Procurar em um diretório uma lista de criterios que estão em um TXT e copia-los para outro diretório

Iago Queiroz Costa
iagocosta

(usa Ubuntu)

Enviado em 14/03/2018 - 16:31h

Olá pessoal,
Preciso de um script que procure dentro de pastas e subpastas e depois copie para outro diretório vários arquivos com nomes NÃO específicos, este script teria que ler um arquivo txt contendo PARTE do nome dos arquivos que eu desejo.

Pra ficar mais claro:

Tenho uma lista(lista.txt) com uma parte do nome dos arquivos que desejo copiar para o diretório /dados.
Conteúdo do arquivo "lista.txt":
89924
89886
89759
89932

Nome dos arquivos na pasta

ND_89924_1_CARLA_LUANA_07032018.pdf
ND_89886_1_WALDIR_LAURA_07032018.pdf
ND_89759_1_THAYS_ROBERTA_10032018.pdf
ND_89932_1_ALINE_LUANA_08032018.pdf

Estes arquivos estão distribuídos dentro do diretório com muitos outros arquivos que não me interessam. Eu só quero os que contém alguma parte no txt por linha.
Pesquisei aqui no VOL e encontrei a seguinte linha de comando:
for i in `cat lista.txt` ; do find /local/origem -type f -iname $i -exec cp --parents {} /local/destino \; ; done

Tentei editar de algumas formas, mas todas sem sucesso.

Por favor, se alguém puder me ajudar.


  


2. Re: Procurar em um diretório uma lista de criterios que estão em um TXT e copia-los para outro diretório

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 14/03/2018 - 16:58h

iagocosta escreveu:

Olá pessoal,
Preciso de um script que procure dentro de pastas e subpastas e depois copie para outro diretório vários arquivos com nomes NÃO específicos, este script teria que ler um arquivo txt contendo PARTE do nome dos arquivos que eu desejo.

Pra ficar mais claro:

Tenho uma lista(lista.txt) com uma parte do nome dos arquivos que desejo copiar para o diretório /dados.
Conteúdo do arquivo "lista.txt":
89924
89886
89759
89932

Nome dos arquivos na pasta

ND_89924_1_CARLA_LUANA_07032018.pdf
ND_89886_1_WALDIR_LAURA_07032018.pdf
ND_89759_1_THAYS_ROBERTA_10032018.pdf
ND_89932_1_ALINE_LUANA_08032018.pdf

Estes arquivos estão distribuídos dentro do diretório com muitos outros arquivos que não me interessam. Eu só quero os que contém alguma parte no txt por linha.
Pesquisei aqui no VOL e encontrei a seguinte linha de comando:
for i in `cat lista.txt` ; do find /local/origem -type f -iname $i -exec cp --parents {} /local/destino \; ; done

Tentei editar de algumas formas, mas todas sem sucesso.

Por favor, se alguém puder me ajudar.


Boa tarde Iago.
O comando abaixo, lista somente os arquivos do seu interesse no DIRETORIODEFINIDO e copia para a PASTADEFINIDA:
find \./DIRETORIODEFINIDO-regextype posix-extended -regex '.*ND_[0-9]{5}_[0-9]_[A-Z_]+[0-9]{8}\.pdf' -exec cp {} /PASTADEFINIDA/ \; 


Marcelo Oliver




3. Re: Procurar em um diretório uma lista de arquivos que estão em um TXT e copia-los para outro diretó

Iago Queiroz Costa
iagocosta

(usa Ubuntu)

Enviado em 14/03/2018 - 17:30h

msoliver escreveu:

Boa tarde Iago.
O comando abaixo, lista somente os arquivos do seu interesse no DIRETORIODEFINIDO e copia para a PASTADEFINIDA:
find \./DIRETORIODEFINIDO-regextype posix-extended -regex '.*ND_[0-9]{5}_[0-9]_[A-Z_]+[0-9]{8}\.pdf' -exec cp {} /PASTADEFINIDA/ \; 


Marcelo Oliver



Boa tarde, Marcelo.

Obrigado pela ajuda, mas eu preciso que o find leia o meu arquivo txt e e faça a cópia dos arquivos a partir do que eu tiver no txt.

o critério de pesquisa vai ser o txt.

estou tentando fazer isso abaixo funcionar.

cat lista | while read FILENAME; \
do find /diretorio_pesquisa/ -iname "*$FILENAME*" -exec cp '{}' /diretorio_saida_copias/ \; ; done;

Att, Iago Costa


4. Re: Procurar em um diretório uma lista de criterios que estão em um TXT e copia-los para outro diretório

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 14/03/2018 - 17:45h

iagocosta escreveu:

msoliver escreveu:

Boa tarde Iago.
O comando abaixo, lista somente os arquivos do seu interesse no DIRETORIODEFINIDO e copia para a PASTADEFINIDA:
find \./DIRETORIODEFINIDO-regextype posix-extended -regex '.*ND_[0-9]{5}_[0-9]_[A-Z_]+[0-9]{8}\.pdf' -exec cp {} /PASTADEFINIDA/ \; 


Marcelo Oliver



Boa tarde, Marcelo.

Obrigado pela ajuda, mas eu preciso que o find leia o meu arquivo txt e e faça a cópia dos arquivos a partir do que eu tiver no txt.

o critério de pesquisa vai ser o txt.

estou tentando fazer isso abaixo funcionar.

cat lista | while read FILENAME; \
do find /diretorio_pesquisa/ -iname "*$FILENAME*" -exec cp '{}' /diretorio_saida_copias/ \; ; done;

Att, Iago Costa


Iago, coloquei uma REGEX no find, que casa exatamente o que vc quer.
Se realmente deseja que "pegue" da lista txt,
faça um laço, use uma REGEX para casar, casando, copia...



5. Re: Procurar em um diretório uma lista de criterios que estão em um TXT e copia-los para outro diret

Iago Queiroz Costa
iagocosta

(usa Ubuntu)

Enviado em 14/03/2018 - 18:53h


Iago, coloquei uma REGEX no find, que casa exatamente o que vc quer.
Se realmente deseja que "pegue" da lista txt,
faça um laço, use uma REGEX para casar, casando, copia...



Marcelo, este esta sendo o problema. Não estou conseguindo casar o txt no find.
E essa lista txt vai mudar diariamente. E não são só 4 linhas no txt, são cerca de 180 por dia. Por isso a necessidade.



6. Re: Procurar em um diretório uma lista de criterios que estão em um TXT e copia-los para outro diretório

Ryuk Shinigami
Ryuk

(usa Nenhuma)

Enviado em 14/03/2018 - 22:11h

for i in `cat lista.txt` ; do find /local/origem -type f -iname "*$i*" -exec cp --parents {} /local/destino \; ; done 



7. Re: Procurar em um diretório uma lista de criterios que estão em um TXT e copia-los para outro diretório

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 15/03/2018 - 16:26h

iagocosta escreveu:


Iago, coloquei uma REGEX no find, que casa exatamente o que vc quer.
Se realmente deseja que "pegue" da lista txt,
faça um laço, use uma REGEX para casar, casando, copia...



Marcelo, este esta sendo o problema. Não estou conseguindo casar o txt no find.
E essa lista txt vai mudar diariamente. E não são só 4 linhas no txt, são cerca de 180 por dia. Por isso a necessidade.


Iago, boa tarde.
Agora "pega" os dados da lista.txt.
while read -r Num;do
find \./ORIGEM -regextype posix-extended -regex '.*ND_'$Num'_[0-9]_[A-Z_]+[0-9]{8}\.pdf' -exec cp {} /DESTINO/ \;
done<lista.txt


OBS.: Defina a pasta ORIGEM e DESTINO
Se a resposta resolveu o seu problema, marque o tópico como resolvido...
E se a RESPOSTA foi esclarecedora e satisfatória, marque a MINHA RESPOSTA como A MELHOR,
dessa forma sou pontuado, o q incentiva a continuar colaborando...

Marcelo Oliver






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts