Pular para o conteúdo

Inserir uma palavra antes do nome de vários arquivos no ato da cópia para outro diretório

Responder tópico
  • Denunciar
  • Indicar

1. Inserir uma palavra antes do nome de vários arquivos no ato da cópia para outro diretório

Enviado em 16/12/2021 - 18:37h

Caros boa tarde,
Me desculpem antecipadamente a forma da postagem contendo 2 dúvidas no mesmo tópico e se puderem esclarecer, agradeço.

Dúvida 1) Tenho 1 diretório contendo vários arquivos e alguns com as mesmas iniciais e mesma extensão. Ex.: M20*.TXT, variando o que está em *(asterisco). Como fazer para que ele copie estes arquivos M20*.TXT para outro diretório, porem inserindo uma palavra qualquer antes do nome original, como por exemplo: ARQ-M20*.TXT. Gostaria de um auxilio para entender como fazer este procedimento.

Dúvida 2) Dentro deste mesmo diretório preciso procurar por algumas palavras-chaves nos arquivos e copiar somente o que encontrar a busca. Por exemplo: grep "termo-de-procura" * . Ele me exibe 5 arquivos encontrados e, a partir deste resultado, copiá-los para o diretório de destino.

Desde já agradeço e mais uma vez desculpas no modo da postagem.

Fabiano 12

Responder tópico

2. Re: Inserir uma palavra antes do nome de vários arquivos no ato da cópia para outro diretório

Enviado em 16/12/2021 - 20:09h

fabianox11 escreveu:

Caros boa tarde,
Me desculpem antecipadamente a forma da postagem contendo 2 dúvidas no mesmo tópico e se puderem esclarecer, agradeço.

Dúvida 1)
Tenho 1 diretório contendo vários arquivos e alguns com as mesmas iniciais e mesma extensão. Ex.: M20*.TXT, variando o que está em *(asterisco). Como fazer para que ele copie estes arquivos M20*.TXT para outro diretório, porem inserindo uma palavra qualquer antes do nome original, como por exemplo: ARQ-M20*.TXT. Gostaria de um auxilio para entender como fazer este procedimento.

Dúvida 2) Dentro deste mesmo diretório preciso procurar por algumas palavras-chaves nos arquivos e copiar somente o que encontrar a busca.
Por exemplo: grep "termo-de-procura" * .
Ele me exibe 5 arquivos encontrados e, a partir deste resultado, copiá-los para o diretório de destino.

Desde já agradeço e mais uma vez desculpas no modo da postagem.

Fabiano 12
Dúvida 1)
Boa noite Fabiano, segue exemplo:

dir_origem="/Diretório_Origem/"
dir_destino="Diretório_Destino"
for arq in ${dir_origem}/M20*.txt ;do
#Se os nomes estiverem de acordo, tire o echo e as aspas duplas #
echo "cp ${arq} ${dir_destino}/ARQ_${arq/$dir_origem\/}";
done
---------------------------------------------------------------------------------------
Com awk:
Testes:
ls -1 /DIRETÓRIO/M20*.txt|awk -F"/" '{system("echo cp "$0" /Dir/Destino/ARQ_"$NF)}'
Copiando
ls -1 /DIRETÓRIO/M20*.txt|awk -F"/" '{system("cp "$0" /Dir/Destino/ARQ_"$NF)}'


Dúvida 2)
grep -r "termo-de-procura" Diretório >> arqs.txt
Verifique se tem arquivos duplicados em arqs.txt.
Faça um laço, leia linha a linha de arqs.txt,
pegando o nome do arquivo, 1º campo,
só fazer a cópia.....
------------------------------------------------------------------------------------------
Não verifica se tem arqs repetidos
grep -r "pattern" Diretório/|awk -F":" '{system("cp "$1" /Novo_DIR/"$2)}'

#Verifica
grep -r "pattern" /Diretório/|awk -F"[/:]" '!X[$2]++{sub(":"$3,"",$0);system("cp "$0" /Novo_DIR/"$2)}'


______________________________________________________________________
Importante:
lynx --dump https://www.vivaolinux.com.br/termos-de-uso/|sed -nr '/^[ ]+Se/,/dou.$/p'
______________________________________________________________________
Nota de esclarecimento:
O comando: ACIMA, faz parte da minha assinatura.
Att.: Marcelo Oliver
______________________________________________________________________

3. Re: Inserir uma palavra antes do nome de vários arquivos no ato da cópia para outro diretório

Enviado em 20/12/2021 - 11:17h


msoliver escreveu:

fabianox11 escreveu:

Caros boa tarde,
Me desculpem antecipadamente a forma da postagem contendo 2 dúvidas no mesmo tópico e se puderem esclarecer, agradeço.

Dúvida 1)
Tenho 1 diretório contendo vários arquivos e alguns com as mesmas iniciais e mesma extensão. Ex.: M20*.TXT, variando o que está em *(asterisco). Como fazer para que ele copie estes arquivos M20*.TXT para outro diretório, porem inserindo uma palavra qualquer antes do nome original, como por exemplo: ARQ-M20*.TXT. Gostaria de um auxilio para entender como fazer este procedimento.

Dúvida 2) Dentro deste mesmo diretório preciso procurar por algumas palavras-chaves nos arquivos e copiar somente o que encontrar a busca.
Por exemplo: grep "termo-de-procura" * .
Ele me exibe 5 arquivos encontrados e, a partir deste resultado, copiá-los para o diretório de destino.

Desde já agradeço e mais uma vez desculpas no modo da postagem.

Fabiano 12
Dúvida 1)
Boa noite Fabiano, segue exemplo:

dir_origem="/Diretório_Origem/"
dir_destino="Diretório_Destino"
for arq in ${dir_origem}/M20*.txt ;do
#Se os nomes estiverem de acordo, tire o echo e as aspas duplas #
echo "cp ${arq} ${dir_destino}/ARQ_${arq/$dir_origem\/}";
done
---------------------------------------------------------------------------------------
Com awk:
Testes:
ls -1 /DIRETÓRIO/M20*.txt|awk -F"/" '{system("echo cp "$0" /Dir/Destino/ARQ_"$NF)}'
Copiando
ls -1 /DIRETÓRIO/M20*.txt|awk -F"/" '{system("cp "$0" /Dir/Destino/ARQ_"$NF)}'


Dúvida 2)
grep -r "termo-de-procura" Diretório >> arqs.txt
Verifique se tem arquivos duplicados em arqs.txt.
Faça um laço, leia linha a linha de arqs.txt,
pegando o nome do arquivo, 1º campo,
só fazer a cópia.....
------------------------------------------------------------------------------------------
Não verifica se tem arqs repetidos
grep -r "pattern" Diretório/|awk -F":" '{system("cp "$1" /Novo_DIR/"$2)}'

#Verifica
grep -r "pattern" /Diretório/|awk -F"[/:]" '!X[$2]++{sub(":"$3,"",$0);system("cp "$0" /Novo_DIR/"$2)}'


______________________________________________________________________
Importante:
lynx --dump https://www.vivaolinux.com.br/termos-de-uso/|sed -nr '/^[ ]+Se/,/dou.$/p'
______________________________________________________________________
Nota de esclarecimento:
O comando: ACIMA, faz parte da minha assinatura.
Att.: Marcelo Oliver
______________________________________________________________________

Bom dia Marcelo,
Todas as sugestões funcionaram perfeitamente. Porém, se puder esclarecer a sintaxe dos comandos abaixo, até para que possa ter um entendimento de funcionamento, agradeço.

Sintaxe1: ls -1 /DIRETÓRIO/M20*.txt|awk -F"/" '{system("cp "$0" /Dir/Destino/ARQ_"$NF)}'

Sintaxe2: grep -r "pattern" /Diretório/|awk -F"[/:]" '!X[$2]++{sub(":"$3,"",$0);system("cp "$0" /Novo_DIR/"$2)}'

Sds,
Fabiano 12

4. Re: Inserir uma palavra antes do nome de vários arquivos no ato da cópia para outro diretório

Enviado em 20/12/2021 - 18:31h

fabianox11 escreveu:


msoliver escreveu:

fabianox11 escreveu:

Caros boa tarde,
Me desculpem antecipadamente a forma da postagem contendo 2 dúvidas no mesmo tópico e se puderem esclarecer, agradeço.

Dúvida 1)
Tenho 1 diretório contendo vários arquivos e alguns com as mesmas iniciais e mesma extensão. Ex.: M20*.TXT, variando o que está em *(asterisco). Como fazer para que ele copie estes arquivos M20*.TXT para outro diretório, porem inserindo uma palavra qualquer antes do nome original, como por exemplo: ARQ-M20*.TXT. Gostaria de um auxilio para entender como fazer este procedimento.

Dúvida 2) Dentro deste mesmo diretório preciso procurar por algumas palavras-chaves nos arquivos e copiar somente o que encontrar a busca.
Por exemplo: grep "termo-de-procura" * .
Ele me exibe 5 arquivos encontrados e, a partir deste resultado, copiá-los para o diretório de destino.

Desde já agradeço e mais uma vez desculpas no modo da postagem.

Fabiano 12
Dúvida 1)
Boa noite Fabiano, segue exemplo:

dir_origem="/Diretório_Origem/"
dir_destino="Diretório_Destino"
for arq in ${dir_origem}/M20*.txt ;do
#Se os nomes estiverem de acordo, tire o echo e as aspas duplas #
echo "cp ${arq} ${dir_destino}/ARQ_${arq/$dir_origem\/}";
done
---------------------------------------------------------------------------------------
Com awk:
Testes:
ls -1 /DIRETÓRIO/M20*.txt|awk -F"/" '{system("echo cp "$0" /Dir/Destino/ARQ_"$NF)}'
Copiando
ls -1 /DIRETÓRIO/M20*.txt|awk -F"/" '{system("cp "$0" /Dir/Destino/ARQ_"$NF)}'


Dúvida 2)
grep -r "termo-de-procura" Diretório >> arqs.txt
Verifique se tem arquivos duplicados em arqs.txt.
Faça um laço, leia linha a linha de arqs.txt,
pegando o nome do arquivo, 1º campo,
só fazer a cópia.....
------------------------------------------------------------------------------------------
Não verifica se tem arqs repetidos
grep -r "pattern" Diretório/|awk -F":" '{system("cp "$1" /Novo_DIR/"$2)}'

#Verifica
grep -r "pattern" /Diretório/|awk -F"[/:]" '!X[$2]++{sub(":"$3,"",$0);system("cp "$0" /Novo_DIR/"$2)}'


______________________________________________________________________
Importante:
lynx --dump https://www.vivaolinux.com.br/termos-de-uso/|sed -nr '/^[ ]+Se/,/dou.$/p'
______________________________________________________________________
Nota de esclarecimento:
O comando: ACIMA, faz parte da minha assinatura.
Att.: Marcelo Oliver
______________________________________________________________________

Bom dia Marcelo,
Todas as sugestões funcionaram perfeitamente.
Porém, se puder esclarecer a sintaxe dos comandos abaixo, até para que possa ter um entendimento de funcionamento, agradeço.

Sintaxe1: ls -1 /DIRETÓRIO/M20*.txt|awk -F"/" '{system("cp "$0" /Dir/Destino/ARQ_"$NF)}'

Sintaxe2: grep -r "pattern" /Diretório/|awk -F"[/:]" '!X[$2]++{sub(":"$3,"",$0);system("cp "$0" /Novo_DIR/"$2)}'

Sds,
Fabiano 12

----------------------------------------------------------------------------------------------------------------
Boa tarde Fabiano.
Sintaxe 01:
O awk, usando o "Separador de Campo" "/" (-F"),
e a função system(), "monta" e executa o comando "cp",
Usando $0 como origem e /Dir/Destino/ARQ_"$NF) como destino,
onde $0 é a linha inteira,
$NF, é o ultimo campo.

#A função system(), executa comandos externos:
+1 Exemplo:
printf "%s\n" {1..12}|awk '{printf "Mês:%02d\n" ,$1;system("cal -m"$1)}' 

----------------------------------------------------------------------------------------------------------------

Sintaxe 02:
Separador de campo, -F"[/:]",
o "parte" do awk, "!X[$2]++", checa se o campo $2 NÃO existe na "matriz/array", o detalhe é a "!", negação.....
$2 é o "Nome do Arquivo"
O "sub(":"$3,"",$0)", elimina ":"$3, do campo $0
$3 é a linha 'casada' no grep, o que não nos interessa....
Resumindo:
Se $2 não existe na Matrix, retire ":$3" de $0, e execute o comando cp ,
system("cp "$0" /Novo_DIR/"$2)
----------------------------------------------------------------------------------------------------------------
awk eliminando linhas duplicadas:

echo -e "Um\nDois\nTrês\nDois\nUm\nTrês\nTrês\nQuatro"|awk '!X[$1]++{printf "%s ",$0}'
Um Dois Três Quatro


É isso....

______________________________________________________________________
Importante:
Se te AJUDEI, me AJUDE,
MARCANDO a MELHOR RESPOSTA.

______________________________________________________________________
lynx --dump https://www.vivaolinux.com.br/termos-de-uso/|sed -nr '/^[ ]+Se/,/dou.$/p'
______________________________________________________________________
Nota de esclarecimento:
O comando: ACIMA, faz parte da minha assinatura.
Att.: Marcelo Oliver
______________________________________________________________________

Responder tópico

Responder tópico

Entre na sua conta para responder.

Fazer login para responder