1. Inserir uma palavra antes do nome de vários arquivos no ato da cópia para outro diretório
fabianox11usa Fedora
Post recolhido
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.
2. Re: Inserir uma palavra antes do nome de vários arquivos no ato da cópia para outro diretório
msoliverusa Debian
Post recolhido
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.
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)}'
______________________________________________________________________ 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
fabianox11usa Fedora
Post recolhido
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.
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)}'
______________________________________________________________________ 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)}'
4. Re: Inserir uma palavra antes do nome de vários arquivos no ato da cópia para outro diretório
msoliverusa Debian
Post recolhido
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.
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)}'
______________________________________________________________________ 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)}'
----------------------------------------------------------------------------------------------------------------
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.
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
______________________________________________________________________