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

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

Fabiano
fabianox11

(usa Fedora)

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


  


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

Marcelo Oliver
msoliver

(usa Debian)

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

Fabiano
fabianox11

(usa Fedora)

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

Marcelo Oliver
msoliver

(usa Debian)

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
______________________________________________________________________







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts