Atualizando o horário da última modificação de um arquivo

0

Eu criei um script para ler 15 arquivos pcap de uma pasta e mesclá-los em um arquivo usando o comando mergecap. Eu quero que o arquivo mesclado tenha o tempo de criação igual ao primeiro arquivo dos 15 arquivos e o horário da última modificação igual ao último 15º arquivo. WRT Alterando a data de um arquivo Criado "e" Last Modified "atributos para outro arquivo

Eu tenho como modificar os tempos de arquivo, mas isso vai mudar todos os tempos de arquivo para que o primeiro arquivo. O comando touch -m precisa ser usado aqui, mas não consigo ver como salvar o último horário modificado do último arquivo e colocá-lo no arquivo mesclado.

    
por Jishnu U Nair 13.03.2014 / 09:22

1 resposta

4

O mais simples: você pode usar:

touch -r Referencefile  THEFILE  

para dar ao THEFILE o mesmo tempo que o Referencefile então:

rm -f Referencefile
echo > Referencefile  #to set the creation time
#...do your captures here, then concatenate into THEFILE ....
echo >> Referencefile #to set the modification time
touch -r Referencefile THEFILE

Mas se você preferir ter uma maneira mais flexível:

Para ter uma maneira "confiável" de obter o tempo de um arquivo em um formato "portátil", não dependendo se o arquivo foi alterado pela última vez em seis meses, etc:

tar cf - file  | tar tvf -

para que você possa fazer isso para ter um tempo adequado para o toque:

gettouchdate () { 
 tar cf - "$1" | tar tvf - | tr ':' ' ' \
  | awk '{mm=sprintf("%02d",(match("JanFebMarAprMayJunJulAugSepOctNovDec",$5)+2)/3) ;
          print $10 mm $6 $7 $8 $9 ;}'
}
#firstdate=$(gettouchdate "/path/to/FIRSTFILE")
lastdate=$(gettouchdate "/path/to/LASTFILE")
touch -r /path/to/FIRSTFILE  THEFILE
touch -m "$lastdate" THEFILE
    
por 13.03.2014 / 10:28