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
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