Tem como copiar somente o ultimo arquivo postado [RESOLVIDO]

1. Tem como copiar somente o ultimo arquivo postado [RESOLVIDO]

Carlos Eduardo de Laia Santos
carlosesantos

(usa Linux Mint)

Enviado em 29/01/2014 - 15:34h

Boa tarde galera!

Alguém sabe me responder se existe algum parâmetro no comando cp ou outro que me deixa copiar somente o ultimo arquivo postado em uma pasta. Existe alguma maneira de fazer isto???


  


2. Re: Tem como copiar somente o ultimo arquivo postado [RESOLVIDO]

William Amaral de Souza
Williamm

(usa Linux Mint)

Enviado em 29/01/2014 - 15:40h

Tu pode usar o comando find junto com o cp


3. Re: Tem como copiar somente o ultimo arquivo postado [RESOLVIDO]

William Amaral de Souza
Williamm

(usa Linux Mint)

Enviado em 29/01/2014 - 15:43h

Eu uso uma função semelhante que encontrei na net para buscar e informar o ultimo arquivo de backup, você pode usar para usar o cp

http://www.vivaolinux.com.br/script/Verifica-Ultimos-arquivos-criados?hide=1


Da uma olhada na versão 2


4. Re: Tem como copiar somente o ultimo arquivo postado [RESOLVIDO]

Carlos Eduardo de Laia Santos
carlosesantos

(usa Linux Mint)

Enviado em 29/01/2014 - 15:45h

Mas pelo find eu consigo saber qual seria o meu arquivo mais recente dentro de uma pasta? Ou vc acha que usando o touch ajudaria mais?


5. Re: Tem como copiar somente o ultimo arquivo postado [RESOLVIDO]

Fernando
phoemur

(usa Debian)

Enviado em 29/01/2014 - 18:07h

Nessa hora a criatividade conta bastante...rs Olha as gambiarras:

Achando o arquivo mais recente:

find . -type f -maxdepth 1 -printf "%C@ %p\\n" | sort -r | awk 'NR==1 {print $2}'


copiando o arquivo mais recente para um destino:

find . -type f -maxdepth 1 -printf "%C@ %p\\n" | sort -r | awk 'NR==1 {print $2}' | xargs -i cp "{}" /home/destino


Utilizando o ls, arquivo mais recente:

ls -btw1 --color=never | while read LINE; do if test -f $LINE; then echo $LINE; break; fi; done


Utilizando ls + file descriptors e copiando o arquivo mais recente para o destino:

exec 3< <(ls -btw1 --color=never); while read LINE <&3; do if test -f $LINE; then cp "$LINE" /home/destino/; break; fi; done; exec 3<&-


O tamanho do comando é limitado pela sua criatividade...rs acho que todos esses devem funcionar.. Abraço
O problema com o comando ls é que ele também lista os diretórios e se você jogar o diretório pra um pipe com copy você vai copiar o diretório inteiro, então precisa de algum método pra filtrar, como eu utilizei nos exemplos...

O problema com o find é que ele acha pelo -ctime mas não ordena o resultado, então tem que jogar o resultado no comando sort pra pegar o mais recente...

Pelo menos eu faria assim se precisasse dos comandos...


6. Re: Tem como copiar somente o ultimo arquivo postado [RESOLVIDO]

Paulo
paulo1205

(usa Ubuntu)

Enviado em 29/01/2014 - 20:31h

Geralmente eu não gosto de usar ls para essas coisas, mas nesse caso vai ficar bem mais curto.

cp "`ls -1trap | grep -v '/$' | tail -n 1`" local_de_destino 



7. Re: Tem como copiar somente o ultimo arquivo postado [RESOLVIDO]

Fernando
phoemur

(usa Debian)

Enviado em 29/01/2014 - 21:26h

O colega paulo tem toda a razão, pois jogar a saída do ls em um pipe pra outro comando pode gerar diversos problemas, a saber:

1-) Geralmente usuários de Linux usam a saída do ls colorida e daí os outros comandos podem não entendê-la...

2-) A depender das opções que você usa, os arquivos com espaços no nome podem ser listados como por exemplo:
- "Apenas um exemplo"
ou
- Apenas\ um\ exemplo
E isso pode fazer diferença pro comando seguinte.

3-) Isso porque em alguns sistemas o comando ls não está em conformidade com o POSIX e então a saída pode variar entre diferentes computadores ou sistemas operacionais, levando a resultados diferentes.
Um exemplo antigo: http://lists.freebsd.org/pipermail/freebsd-standards/2004-August/000654.html

4-) Veja este site explicando outras situações
http://mywiki.wooledge.org/ParsingLs

5-) dependendo do seu LOCALE a saída também é diferente:
- promoção.txt
ou
- promoção.txt

Why you shouldn't parse the output of ls(1)

(...)
In its default mode, if standard output isn't a terminal, ls separates filenames with newlines. This is fine until you have a file with a newline in its name. And since I don't know of any implementation of ls that allows you to terminate filenames with NUL characters instead of newlines, this leaves us unable to get a list of filenames safely with ls.
(...)


Em resumo, não confie cegamente na saída do ls


8. Re: Tem como copiar somente o ultimo arquivo postado [RESOLVIDO]

Carlos Eduardo de Laia Santos
carlosesantos

(usa Linux Mint)

Enviado em 30/01/2014 - 14:06h

Poxa galera, gostaria de agradecer a todos pela atenção. E dizer que eu testei todos os comandos e saiu exatamente como eu queria.
Muito obrigado mesmo.


9. Problema no Cron

Carlos Eduardo de Laia Santos
carlosesantos

(usa Linux Mint)

Enviado em 10/03/2014 - 15:14h

Boa tarde paulo1205!!!

Desculpa te incomodar mais uma vez, mas é que algum tempo atrás você me ajudou muito em um problema que eu estava tendo no shell, de como achar o ultimo arquivo colocado em um diretório. Na época eu testei os dois comandos, um que você havia enviado e outro que o phoemur enviou, e os dois funcionaram muito bem, mas o do phoemur que usava o comando find estava dando alguns erros. O que eu queria te perguntar é o seguinte, no meu script eu so preciso deste comando pra selecionar um arquivo e enviar ele pra outro servidor, quando eu rodo o script na mão, ele funciona perfeitamente... Porém quando eu coloco ele no cron, o script não funciona, a princípio eu pensei que fosse por causa dos erros que ele estava apresentando, ai eu corrigi todos, e mesmo assim o script não roda no cron, so roda se for a mão, ai ele funciona perfeitamente. Eu ja dei todas as permissões que ele precisava e o unico comando que falha é esse:

cp "`ls -1trap | grep -v '/$' | tail -n 1`" $DIR

Será que você saberia me ajudar???
Desde já eu agradeço a sua atenção e me desculpe mais uma vez pelo incomodo!!!







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts