Linux - Data do último arquivo modificado em uma pasta

1

O que eu quero realizar aqui é:

Eu tenho um site da apache e, nesse site, quero exibir algo como

Latest website update: 01/12/2011 at 6h32 AM

Eu tive uma ideia de como fazer isso. Eu poderia escrever um script de hora em hora que verifica a data do último arquivo modificado no / var / www . E, em seguida, armazene esse valor em um arquivo ou no banco de dados para acesso rápido.

Como posso fazer isso? Se você tiver uma ideia melhor, compartilhe comigo.

    
por Jonathan Rioux 02.12.2011 / 17:03

4 respostas

2

Isso fornece a saída exata solicitada na sua pergunta:

echo "Latest website update: $(date -d @$(find /var/www -type f -exec stat -c%Z {} \; | sort | tail -1) "+%d/%m/%Y at %lh%M %p")"

Última atualização do site: 02/12/2011 às 8h55

Foi um divertido one-liner, mas eu não recomendaria usá-lo. Provavelmente será lento.

    
por 02.12.2011 / 17:57
1
$lastupdated = 'ls -ltr <directory> | tail -n 1'

precisa fazer alguns cortes na linha, mas basicamente este é seu último arquivo atualizado + data.

    
por 02.12.2011 / 17:14
0

Talvez o uso da saída do GNU stat ajude. stat -x /var/www

    
por 02.12.2011 / 17:14
0

Você está procurando algum arquivo em e sob o diretório fornecido?

Para um diretório, a resposta do @ Flash funciona bem. (Embora ls -lt /var/www | head -n 2 | cut -c40-53 seja um pouco mais rápido, à custa de um \n extra no resultado)

Para um diretório inteiro tree , você pode usar uma variação em

'find /var/www  -type f -printf '%T@\t%TH:%TM on %Tx\t%p\n' | sort -k1 -n | cut -f 2 | head -n 1'
    
por 02.12.2011 / 17:58