stat - dicas e scripts utilizando stat.

Atualizado em: 23/07/2006



Sobre este documento

Exemplos de uso do stat, linhas de comando e scripts.

stat - display file or file system status

stat vem no pacote coreutils

página do manual.

man stat

Alguns exemplos

Refinar o resultado, passe o resultado com pipe para outra ferramenta como cut ou awk e aplique o filtro nos campos desejados.

Alguns exemplos de comando e resultados.

stat /tmp/teste/comandos.txt

    File: `/tmp/teste/comandos.txt'
    Size: 40908           Blocks: 80         IO Block: 4096   arquivo comum
  Device: 802h/2050d      Inode: 75488       Links: 1
  Access: (0755/-rwxr-xr-x)  Uid: ( 1000/    zago)   Gid: (  100/   users)
  Access: 2006-07-18 19:32:59.000000000 -0300
  Modify: 2006-07-18 01:37:32.000000000 -0300
  Change: 2006-07-18 01:37:32.000000000 -0300

stat -f /tmp/teste/comandos.txt

    File: "/tmp/teste/comandos.txt"
      ID: 0        Namelen: 255     Type: reiserfs
  Blocks: Total: 38833933   Free: 29439408   Available: 29439408   Size: 4096
  Inodes: Total: 0          Free: 0

formatar o resultado, use -c ou --format= mais o parametro, veja lista completa no man stat

-c --format=FORMAT use the specified FORMAT instead of the default

Dono do arquivo

  echo `stat --format=%u /tmp/teste/comandos.txt`
  1000
  
  echo `stat -c %u /tmp/teste/comandos.txt`
  1000

Pegar o tamanho do arquivo em bytes

  MTAM=$(stat -c %s /tmp/teste/comandos.txt)
  echo $MTAM
  40908

Salvar as permissões do arquivo em variável.

  MPERM=$(stat -c %A /tmp/teste/comandos.txt)
  echo $MPERM
  -rwxr-xr-x
  
  MPERM=$(stat -c %a /tmp/teste/comandos.txt)
  echo $MPERM
  755

Data no formato Unix (segundos).

  MVAR=$(stat -c %Y fimmes)
  echo $MVAR
  1152426032
  
  ou
  
  echo `stat --format=%Y /tmp/teste/comandos.txt`
  

Data do último acesso

  MVAR=$(stat -c %y fimmes)
  echo $MVAR
  2006-07-09 03:20:32.000000000 -0300

Pegar última modificação do arquivo.

  MMODIF=$(stat /tmp/teste/comandos.txt | grep Modify | cut -d" " -f2)
  echo $MMODIF
  2006-07-18
  
  echo `stat /tmp/teste/comandos.txt | grep Modify | awk '{print $2}'`
  2006-07-18
  
  MMODIF=$(stat /tmp/teste/comandos.txt | grep Modify | awk '{print $2}')
  echo $MMODIF
  2006-07-18

Pegar data da última vez que foi executado (acessado), tem 2 resultado Access, as linhas de comando abaixo pega a data que está na linha 5.

  MMODIF=$(stat /tmp/teste/comandos.txt | awk 'NR == 5 {print $2}' )
  echo $MMODIF
  2006-07-19
  
  MMODIF=$(stat /tmp/teste/comandos.txt | awk 'NR == 5' | cut -d" " -f2)
  echo $MMODIF
  2006-07-19

Indicações

Tutorial sobre data
http://www.zago.eti.br/script/data.html

Página principal sobre script em geral (FAQ)
http://www.zago.eti.br/script/A-menu-scripts.html

Página principal deste site (FAQ)
http://www.zago.eti.br/menu.html