Stat 在MacOS 下,也是用来显示文件信息的。
$ stat filename
但显示方式却不太易读。 所以,可以通过一些参数来达到具体要求。
-F : 可以为不同类型文件,显示特殊标志。
目录文件: /
可执行文件: *
软链接文件: @
socket : =
FIFO(命名管道): |
管道读写数据的原理是先进先出(First In First Out) 所以叫做FIFO
-x : Display information in a more verbose way as known from some Linux distributions.but only defines 3 of the 4 dates:
用类似linux的形式显示信息,可读性好些。但只显示三个相关时间。
stat -x Perl_Note.txt
File: "Perl_Note.txt"
Size: 5904 FileType: Regular File
Mode: (0644/-rw-r--r--) Uid: ( 501/ mc) Gid: ( 20/ staff)
Device: 1,4 Inode: 4306972698 Links: 1
Access: Wed Oct 23 10:20:53 2019
Modify: Wed Oct 23 10:20:52 2019
Change: Wed Oct 23 10:20:52 2019
-s : Display information in 'shell output', suitable for initializing variables.
比起 -x 这里显示信息多些,包括第四个时间 st_birthtime
st_birthtime 是创建时间
stat -s Perl_Note.txt
st_dev=16777220 st_ino=4306972698 st_mode=0100644 st_nlink=1 st_uid=501 st_gid=20 st_rdev=0 st_size=5904 st_atime=1571797253 st_mtime=1571797252 st_ctime=1571797252 st_birthtime=1565840871 st_blksize=4194304 st_blocks=16 st_flags=64
Stat的输出大致如下:
Device ID
Inode number
Permissions (mode)
Hard link count (usually 1)
File userid (owner)
File groupid
Device ID
Size in bytes
Last access time
Last (contents) modification time
Last permissions change time
Create time
Ideal block size for file
512-byte-size blocks allocated for file
Flags set on file (see chflags(2))
四个时间的定义如下:
st_atime Time when file data last accessed. 读取时间。
st_mtime Time when file data last modified. 内容修改时间
st_ctime Time when file status was last changed (inode data modification).
Inode修改时间
st_birthtime Time of file creation. 创建时间
此四个时间也可以通过 ls 命令获得:
ls -la : 获得atime
ls -lu : 获得mtime
ls -lc : 获得ctime
ls -lU : 获得birthtime
好用的-f参数:
stat -f Format filename
Formate以%开头,后跟参数。如果%后立即接n,t,%或@,则分别打印出换行、制表、百分号和当前文件号:
%stat -f %@___%N *
1___10_30.pl
2___10_exercise.pl
3___10_exercise_c.pl
4___10_file.pl
...
列几个有用参数(其它查man stat):
-N : The name of the file.
-a,m,c,B: The access, modify,ctime and creation time. With S, convert the time to the more readable sequence. 访问、修改、inode 以及创建时间。 使用S,切换成易读的年月日时分秒形式,否则,是1970以来的秒数字符串。 MaxOS里有创建时间,与linux不同。
E.g.: -f "%SA"
几颗栗子:
$ stat -f "Name: %N%n%tAccess_time:%Sa%n%tModify_time:%Sm%n%tCtime:%Sc%n%tCreation_Time:%SB" Perl_Note.txt
Name: Perl_Note.txt
Access_time:Oct 23 10:20:53 2019
Modify_time:Oct 23 10:20:52 2019
Ctime:Oct 23 10:20:52 2019
Creation_Time:Aug 15 11:47:51 2019
Otherwise, the time would be a long sequence such as :Creation_Time:1565840871
用 S可以将时间转化为易读的形式,否则,会使自epoch以来的秒数。
此处,注意:
stat -f %SB -t %Y file only prints the creation year. 只打印出年
But stat -f %SB file prints the creation date and time. 年月是和时间都打印出来
stat -f %SB -t %Y Perl_Note.txt
2019
获得最新修改的三个文件:
stat -f "%m%t%Sm %N" * | sort -rn | head -3 | cut -f2-
Oct 23 11:07:53 2019 Shell_Note
Aug 12 11:35:50 2019 The_Usage_of_vi.rtf
Feb 28 19:01:40 2019 ts_xml.sh
### stat -f "%m%t%Sm %N" /tmp/* | sort -rn | head -3 | cut -f2-
阅读(6458) | 评论(0) | 转发(0) |