Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #58 da revista programar. Faz já o download aqui!

fearz7

Copiar ficheiros com uma determinada restrição

Mensagens Recomendadas

fearz7    1
fearz7

Boa tarde,

Dada uma directoria com os seguintes ficheiros:

ficheiro1.txt

ficheiro2.txt

.

.

.

ficheiron.txt

Como é que eu consigo copiar todos os ficheiros acima de um numero x (Ex:5)?

Melhores cumprimentos.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Rui Carlos    312
Rui Carlos

Consigo fazer com backreference mas não haverá uma abordagem mais simples?

Qual é o comando que estás a usar?

Com a abordagem que indiquei, o único "problema" será o facto de os números poderem ter mais de um algarismo, mas ainda assim não me parece complicado.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
fearz7    1
fearz7

Estava a pensar numa abordagem tipo isto (não responde à questão ):

$ cat file.txt | awk '{if (($1) >= "183202") print}

"poderem ter mais de um algarismo, mas ainda assim não me parece complicado"

O meu problema esta aqui mesmo como é que eu faço supondo que o valor X= 23 e que quero os ficheiros acima desse numero? Assumindo que as regex não me permitem pesquisa num intervalo não sei como fazer.... pois apenas permitem valores individuais [0-9], tenho que dividir o numero X e construir a regex? Ex: ( [2[3-9] | [3-9][0-9] | [1-9][0-9]+] )

Editado por fearz7

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Rui Carlos    312
Rui Carlos

Para mim a forma mais simples é mesmo usando apenas expressões regulares.

Com o awk, podes usar algo deste género: ls | awk 'match($0, /[0-9]+/) { if (substr( $0, RSTART, RLENGTH )+0 > $N) print $0 }'

A única vantagem que vejo é mesmo o a possibilidade de alterar o número base sem se mexer no comando.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
fearz7    1
fearz7

Mas com o aumentar do numero base terias que estar sempre a mexer na expressão regular certo? Porque não consigo fazer uma genérica que dê para qualquer eventual número.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
fearz7    1
fearz7

Basicamente o problema que tenho para resolver é este e não sei como evitar a cópia repetida de ficheiro e pensei na solução anterior como um possível hipótese de resolver isso.

Untitled.jpg

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Rui Carlos    312
Rui Carlos

Quando falaste em comando, pensei que querias uma linha do terminal. Com scripts efectivamente as expressões regulares não são a melhor opção. Ainda assim, penso que a melhor forma de controlares os repetidos seria com o rsync.

Como é que estás a fazer a cópia entre servidores?

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
fearz7    1
fearz7

Através do ssh trocando a chave publica para não ser necessário a utilização de passwords. E depois faço uso do comando scp (secure copy).

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Rui Carlos    312
Rui Carlos

Ok, então um "truque" que podes fazer com o scp é retirar permissões de escrita sobre os ficheiros já copiados.

A solução em que estavas a pensar também deve funcionar. Com o SSH ias buscar o número do último ficheiro copiado, e depois seleccionavas os restantes.

Ainda assim, e como referi anteriormente, o rsync era a melhor solução.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
fearz7    1
fearz7

Realmente nem tinha pensado nesse truque, muito bom realmente.

Obrigado pelas dicas e pelo tempo perdido!!!!! Foste 5 estrelas.

Melhores cumprimentos :)

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora


×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.