Obter a última data modificada do ficheiro em Linux
Sou novo no Linux. Estou a utilizar a linha de comandos. Estou a tentar ver a data da última modificação de um ficheiro. Como faço isso no Linux a partir da Linha de Comando?
Sou novo no Linux. Estou a utilizar a linha de comandos. Estou a tentar ver a data da última modificação de um ficheiro. Como faço isso no Linux a partir da Linha de Comando?
Como mencionado por @edvinas.me, stat
diz-lhe várias informações sobre o ficheiro incluindo a data da última modificação.
No início, confundi-me com Modify e Change, apenas para esclarecer, stat
listas de saída:
Por exemplo:
~ $ touch foo
~ $ stat foo
File: ‘foo’
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: fc01h/64513d Inode: 410397 Links: 1
Access: (0644/-rw-r--r--) Uid: (80972/ etomort) Gid: (18429/ eem_tw)
Access: 2015-09-21 12:06:11.343616258 +0200
Modify: 2015-09-21 12:06:11.343616258 +0200
Change: 2015-09-21 12:06:11.343616258 +0200
Birth: -
~ $ echo "Added bar to foo file" >> foo
~ $ stat foo
File: ‘foo’
Size: 42 Blocks: 8 IO Block: 4096 regular file
Device: fc01h/64513d Inode: 410654 Links: 1
Access: (0644/-rw-r--r--) Uid: (80972/ etomort) Gid: (18429/ eem_tw)
Access: 2015-09-21 12:09:31.298712951 +0200
Modify: 2015-09-21 12:09:31.298712951 +0200
Change: 2015-09-21 12:09:31.302713093 +0200
Birth: -
~ $ chmod 444 foo
~ $ stat foo
File: ‘foo’
Size: 42 Blocks: 8 IO Block: 4096 regular file
Device: fc01h/64513d Inode: 410654 Links: 1
Access: (0444/-r--r--r--) Uid: (80972/ etomort) Gid: (18429/ eem_tw)
Access: 2015-09-21 12:09:31.298712951 +0200
Modify: 2015-09-21 12:09:31.298712951 +0200
Change: 2015-09-21 12:10:16.040310543 +0200
Birth: -
Outra forma mais flexível é a utilização do date -r
. De man date
:
-r, --reference=FILE
display the last modification time of FILE
Isto tem a vantagem de lhe permitir especificar o formato de saída, por exemplo,
$ date -r foo
Thu Aug 31 10:36:28 AEST 2017
$ date -r foo -R
Thu, 31 Aug 2017 10:36:28 +1000
$ date -r foo -u
Thu Aug 31 00:36:28 UTC 2017
$ date -r foo +%s
1504139788
ls -l
devem fazer o trabalho.
Exemplo:
#> ls -l /home/TEST/
total 16
-rw-r--r-- 1 rfmas1 nms 949 Nov 16 12:21 create_nd_lists.py
-rw-r--r-- 1 rfmas1 nms 0 Nov 16 12:35 enb_list
-rw-r--r-- 1 rfmas1 nms 0 Nov 16 12:35 nb_list
-rw-r--r-- 1 rfmas1 nms 0 Nov 16 12:35 nodes_ip.txt
-rw-r--r-- 1 rfmas1 nms 0 Nov 16 12:35 rnc_list
Construindo fora de @Adam Taylor’s comment in @phoops’s answer e @Sparhawk’s answer.
Para especificamente just obter a data (usando 3 de Outubro de 2019 para exemplos porque era o meu último aniversário, aqui está o meu venmo se você se sente levado a me abençoar financeiramente: @levi_uzodike)
stat -c %y file | cut -d' ' -f1
irá dar-lhe 2019-10-03
date +%F -r file
irá também dar-lhe 2019-10-03
date +%D -r file
irá dar-lhe 10/03/19
date +%x -r file
irá provavelmente dar-lhe 10/03/2019
, ou 10/03/19
se estiver nos EUA e ou 03/10/2019
, ou 03/10/19
se estiver no Reino Unido, apenas para citar alguns exemplos (claro que há mais possibilidades) Estas opções de formato date
são, ao meu entendimento, combinações de outras opções de formato. Aqui estão algumas explicações da página man :
%b nome abreviado do mês do locale (por exemplo, Jan) %B nome completo do mês do locale (por exemplo, Janeiro) … %d dia do mês (por exemplo, 01) %D data; o mesmo que %m/%d/%y %e dia do mês, espaço almofadado; o mesmo que %_d %F data completa; o mesmo que %Y-%m-%d … %m mês (01..12) … %x representação da data do locale (por exemplo, 12/31/99) … %y últimos dois dígitos do ano (00..99) %Y ano … Por defeito, campos numéricos de datas com zeros.
As seguintes bandeiras opcionais podem seguir `%‘:
- (hyphen) do not pad the field
_ (underscore) pad with spaces
0 (zero) pad with zeros
^ use upper case if possible
# use opposite case if possible
N.B.: These flags don’t work on the “combo formats” like %F
, %D
and %x
. They are for the “singular field formats”.
Apparently this last flag ( # ) does not work as I’d expect (e.g., if date +%b
gives Oct
, date +%#b
gives OCT
as opposed to oCT
) I guess this would be useless, but I’d think a lower case option would be more useful. date +%#p
does turn date +%#p
which might give PM
or AM
into pm
or am
, respectively. So I guess it’s not a 'per-character’ case switch but sets the case of all the characters in the string to the opposite case of the majority of the characters? Also date +%#P
gives pm
or am
, but neither date +%^P
nor date +%#P
change its output. My guess for this case is that date +%#P
is just an alias for %P
, and it seems that whenever you add more than one flag, the behavior is undefined/unpredictable ( e.g., %#p
gives the same as date +%0- e
: date +%-e
and 3
gives the same as date +%-0e
: date +%0e
, which makes you think that only the flag next to the letter works or that it goes left to right, but both 03
and date +%#^p
give date +%^#p
or pm
, [depending on the time of course] ) unless there’s some hidden order of operations? Sorry for digressing…
Also, if you run the command am
, you can see the combo for the specific locale of your system (e.g., locale -k LC_TIME | grep ^d_fmt
).
And you can make your own combo. For example,
d_fmt="%m/%d/%Y"
will give you date +%^b\ %-e\ %Y -r file&007OCT 3 2019
Se o ficheiro está noutro servidor web, gosto de httpie
docs ).
pip install httpie --user
-h
dá apenas o cabeçalho. O padrão éhttp -h [url] | grep 'Last-Modified\|Date'
Exemplo:
$ http -h https://martin-thoma.com/author/martin-thoma/ | grep 'Last-Modified\|Date'
Date: Fri, 06 Jan 2017 10:06:43 GMT
Last-Modified: Fri, 06 Jan 2017 07:42:34 GMT
O Date
é importante porque reporta a hora do servidor e não a sua hora local. Além disso, nem todos os servidores enviam Last-Modified
(por exemplo, o super-utilizador parece não o fazer).
1) Listar ficheiros com a Data/Hora da Última Modificação
Para listar ficheiros e mostrar os últimos ficheiros modificados no topo, vamos usar as opções
-lt
com o comandols
.$ ls -lt /run output total 24 -rw-rw-r--. 1 root utmp 2304 Sep 8 14:58 utmp -rw-r--r--. 1 root root 4 Sep 8 12:41 dhclient-eth0.pid drwxr-xr-x. 4 root root 100 Sep 8 03:31 lock drwxr-xr-x. 3 root root 60 Sep 7 23:11 user drwxr-xr-x. 7 root root 160 Aug 26 14:59 udev drwxr-xr-x. 2 root root 60 Aug 21 13:18 tuned
https://linoxide.com/linux-how-to/how-sort-files-date-using-ls-command-linux/