Você não está autenticado.
Arch Linux Brasil está precisando de sua colaboração para realizar o pagamento do domínio e do host, para colaborar, realizar doações via paypal.
Para mais informações: contato at archlinux-br.org.
Oi galera,
atualmente eu to usando esse comando no terminal
ls -Art | tail -n 1
que ele me retorna o último arquivo modificado desde diretório. Acontece que ele só trás do diretório analisado, os subdiretórios não.
Como eu faço pra retornar o último resultado incluindo os subdiretórios?
Offline
tente usar o comando find para isso
por exemplo
find . -type f -mtime -1 | tail -1
. - informa para procurar a partir da pasta atual
-type f - é para informar que será apenas arquivos e não diretórios
-mtine irá procurar por arquivos modificados nas últimas horas
exemplo
-mtime +0 # procurar arquivos modificados acima de 24 horas atrás
-mtime 0 #procurar por arquivos modificado nas últimas 24 horas
-mtime -1 #procurar em menos de um dias atrás (memo que -mtime 0)
-mtime 1 # procurar arquivos modificados nas últimas 48 horas
-mtime +1 # procurar procurar arquivos modificados acima de 48 atrás
Última edição por swatquest (24/09/2017 22:37:32)
Offline
Ta mas eu consigo jogar esse UM valor numa variavel??
Eu estava jogando assim antes
name=$(ls -Art | tail -n 1)
ai ele me retornava o ULTIMO arquivo modificado, mas so da pasta atual... ate ai tudo bem, agora eu preciso do script que falei acima, preciso das SUBPASTAS.
dai esse codigo ai me retorna por exemplo
[[email protected] pdf]$ ls -Art | tail -n 1
teste.txt
ele retorna isso dai teste.txt somente.
ja o outro codigo retorna isso
[[email protected] pdf]$ find . -type f -mtime -1 | tail -1
./teste.txt
um ./teste.txt
sera que ./ tem alguma coisa a ver? dar problema?
dai eu rpeciso jogar isso numa variavel.. esse resultado.
Sera que fazendo
name=$(find . -type f -mtime -1 | tail -1)
consigo jogar pra variavel name??
eu preciso que retorne nessa variavel apenas o teste.txt e nao ./teste.txt... parece que tem como remover parte do nome de uma variavel automaticamente...
Offline
Cheguei a testar o comando
find . -name '*.pdf' -exec mv {} /home/du/Documents/revistas/up \;
dai ele me retornava todos resultados com pdf (e das subpastas) e movia tudo pra uma pasta... e dai depois nessa pasta eu checaria o ultimo por exemplo. mas n deu mto certo.
EDIT
acabei de fazer um teste
name=$(find . -type f -mtime -1 | tail -1)
echo $name
sim, deu certo que imprimiu o ultimo resultado... mas o problema q ele pegou num subdiretorio e o resultado foi por exemplo
teste/teste.txt
eu queria isolar SO o NOME do arquivo e nao o diretorio todo entendeu??
Como faço pra remover o diretorio me retornar SO NOME do arquivo?
agora eu acabei modificando mais na frente do codigo, ai acabei fazendo de um jeito que nao precisa remover o caminho.. mas gostaria de saber como funciona isso tbm... pra futuras modificacoes.
Última edição por beagle (25/09/2017 21:43:27)
Offline
use o basename
basename $(find . -type f -mtime -1 | tail -1)
se for mais de um resultado, use a opção -a
por exemplo
basename -a $(find . -type f -mtime -1 | tail -10)
Última edição por swatquest (25/09/2017 22:58:08)
Offline
Opa vou testar!
Eu tava vendo aqui pra rodar ele todos os dias.. achei o crontab.. da pra usar isso.
Unica duvida é se a maquina estiver desligada, se eu coloqueip pra rodar um script as 10h.. se a maquina nao iver ligada, dai ele so roda no outro dia? o que acontece.
Offline
Acho que a solucão é usar o comando at
você pode colocar também no autostart..
ao ligar roda
ou no profile /etc/profle.d
exemplo
criar um arquivo
touch teste.sh
At "
#!/bin/sh
basename $(find . -type f -mtime -1 | tail -1)
Offline
use aspas para nomes com espaços
basename "$(find . -type f -mtime -1 | tail -1)"
Offline
Usei o crontab aqui pra rodar o script todos dias as 20h, porem com a maquina desligada ele nao roda assim que ligar.. nao tem como arrumar isso? Se a maquina estiver off, assim que ligar executar?
Offline
como disse antes veja o comando at e anacron
https://www.google.com.br/search?q=Sche … wASswLOoDQ
https://www.tecmint.com/cron-vs-anacron … -on-linux/
Última edição por swatquest (01/10/2017 21:48:36)
Offline
com basename tem um erro se o nome do arquivo contém espaço
caso você use o apas dupla "", não funciona se você escolher 2 ou mais no comando tail
por exemplo
basename "$(find . -type f -mtime -1 | tail -10)"
só irá aparecer o último
para isso pode usar o awk
find . -type f -mtime -1 | tail -1 | awk -F "/" '{print $NF}'
mostrará a última coluna com o delimitador /
Offline
E ai! Eu vi aqui entao, tem que usar o anacron visto que o pc que eu preciso rodar o script é desligado!!
Vou pesquisar sobre isso..
Quanto ao comando to usando esse aqui
#!/bin/bash
name=$(ls -Art | tail -n 1)
esse dai eu to rodando no diretorio que eu quero, ai ele retorna o ultimo modificado!! Ta funcionadno blz, so preciso usar agora otal de anacron pra rodar automatico.. visto que o cron nao ta reoslvendo meu problema, pois desligo a maquina!
Offline
Acabei de usar o comando at.
Fiz o teste
echo "shutdown -h now" | at -m 23:55
e realmente desligou a máquina. Adicionei 2 jobs, ele mostrou ali que tinha 2 jobs blz!
Dai a primeira vez ele desligou a maquina, OK.
Dai entao eu liguei a maquina novamente pra testar se a job2 que eu tinha configurado (pra desligar de novo deopis em 5min) iria funcionar, sim funcionou blz!
Mas agora vou pesquisar sobre o anacron, esse at nao entendi muito bem, consigo configurar pra ele rodar todos dias? Pelo que vi por alto aqui o anacron verifica o horario que eu configurei e se a maquina estava off ele executa a tarefa.. isso que quero.
Vou pesquisar durante a semana isso.
Em que diretorio e arquivo fica o arquivo anacron (ou o cron nao sei)
A configuracao pra executar todos dias o script as 20h, caso a maquina esteja off, assim que ligar executar.
Se voce puder me ajudar ja desde ja agradeco!! muito bom!
Offline
Ola, resolvi testar aqui agora...
Me diga se fiz certo.
Fui ate o caminho /etc/anacrontab e abri ele pra editar.
Adicionei a linha
1 10 teste /bin/bash /home/meuuser/scripts/script.sh | at -m 3:01
Resumindo, coloquei 1 pra ser diario e delay de 10min, pelo que eu entendi esses 10min eh quando a maquina ta off e ele identificar que nao rodou o script ainda, ele roda em 10min.
E o comando at entraria nessa linha do arquivo anacrontab. Informando a hora. Eh isso?
Se for, eu nao entendi uma coisa, como eu sei que vai rodar essa linha todos dias, esse anacrontab foi feito pra isso e a configuracao 1 ali indificaria que eh todos dias? Nao entendi muito bem se vc puder me esclarecer!!!
Eu testei o comando at e funfou direitinho no bash... agora dentro do anacrontab, eu nao sei. Eu fiz esse mesmo ccomando que funcionou no terminal eu boei ali no anacrontab!!!
Fico no aguardo muito obrigado desde ja!!
Offline
foi mal pelo e, no caso a palavrea certa seria ou
nunca vi usando os dois ao mesmo tempo.
ou vc usa at ou usa anacron.
contudo se voc6e quer usar uma pacote que tem as funcionabilidades do cron e anacron use o fcron
Offline