当前位置: 首页 > 科技观察

在Linux上使用stat命令查看文件状态

时间:2023-03-22 10:45:44 科技观察

获取任何文件或文件系统的所有信息,只需要一个Linux命令。GNUcoreutils包中包含stat命令,它提供有关文件和文件系统的各种元数据,包括文件大小、节点位置、访问权限和SELinux上下文,以及创建和修改时间。通常,您需要来自多个不同命令的信息,而这个命令可以完成所有工作。在Linux上安装stat命令在Linux系统上,stat命令可能已经预先安装,因为它是核心功能包的一部分,通常默认包含在Linux发行版中。如果您的系统上没有安装stat命令,您可以使用包管理器安装coreutils包。或者,您可以从源代码编译并安装coreutils包。获取文件状态运行stat命令以获取指定文件或目录的可读状态信息。$statplanets.xmlFile:planets.xmlSize:325Blocks:8IOBlock:4096regularfileDevice:fd03h/64771dInode:140217Links:1Access:(0664/-rw-rw-r--)Uid:(1000/tux)Gid:(100/users)上下文:unconfined_u:object_r:user_home_t:s0Access:2021-08-1718:26:57.281330711+1200Modify:2021-08-1718:26:58.738332799+1200Change:2021-08-1718:26:58.71th-ir+19:226:57.281330711+1200输出的信息很容易理解,但是包含的信息量很大。下面是stat包含的项目:File:文件名Size:文件大小,以字节为单位Blocks:为硬盘上的文件保留的数据块个数IOBlock:文件系统块大小regularfile:文件类型(普通文件,目录,filesystem)Device:文件所在的设备inode:文件所在的inode编号links:文件的链接数Access,UID,GID:文件权限,所有者用户和组context:SELinuxcontextAccess,Modify,Change,Birth:文件被访问、修改、改变状态、创建的时间戳Thinoutput对于精通输出或者想使用其他工具(如:awk)解析输出,这里可以使用--terse(短参数是-t)参数实现无标题或换行的格式化输出。$stat--terseplanets.xmlplanets.xml325881b4100977100fd0314021710016291816171629181618162918161816291816174096unconfined_u:object_r:user_home_t:s0可以使用--printf参数输出格式,定义自己的类似于printf的语法stat的每个属性都有一个格式序列(%C表示SELinux上下文,%n表??示文件名等),因此您可以定义输出格式。$stat--printf="%n\n%C\n"planets.xmlplanets.xmlunconfined_u:object_r:user_home_t:s0$$stat--printf="名称:%n\n修改:%y\n"planets.xmlName:planets.xml修改:2021-08-1718:26:58.738332799+1200下面是一些常见的格式序列:%a访问权限%F文件类型%n文件名%U用户名%u用户ID%g组ID%w创建时间%y修改时间在stat手册页和coreutils信息页中都有完整的格式序列列表。文件信息如果您曾经尝试过分析ls-l的输出,您就会欣赏stat命令的灵活性。您不需要每次都提供stat提供的所有信息,但是当您需要部分或全部信息时,它会非常有用。无论您是在读取默认输出,还是您自己创建的查询的输出,stat命令都可以查看您需要的数据。