linux-find命令使用

find

find ./ -name "*.log" -type f -printf "%T@ %p\n" | sort -n | tail -2 

其中,/path/to/search是要搜索的目录,可以根据实际情况进行替换。

该命令的作用如下:

  • find /path/to/search -name "*.log" -type f:在/path/to/search目录下搜索以log结尾的文件,并且只搜索文件(排除目录)。
  • -printf "%T@ %p\n":将搜索到的文件按照修改时间进行输出,输出格式为”时间戳 文件路径”,以便后续进行排序。
  • sort -n:按照时间戳进行排序,由于时间戳是浮点数,因此需要使用-n选项进行数字排序。
  • tail -2:取排序后的最后两个文件,即最近修改的两个文件。
  • cut -f2- -d" ":去掉文件路径前面的时间戳,只输出文件路径。

请注意,在以上命令中,时间戳越小表示文件修改时间越早,因此排序后取最后两个文件即可得到最近修改的两个文件。

printf

-printf选项可以指定多个格式化字符串来输出不同的信息,下面列出一些常用的格式化字符串:

  • %p:输出文件的路径名。
  • %s:输出文件的大小,以字节为单位。
  • %f:输出文件名,不包括路径。
  • %m:输出文件的权限。
  • %u:输出文件的所有者。
  • %g:输出文件的所有者所在的组。
  • %D:输出文件的所在目录路径名。
  • %n:输出符号链接指向的文件名。
  • %h:输出符号链接所在的目录路径名。
  • %Y:输出符号链接指向的文件类型。
  • %Z:输出符号链接指向的文件的安全上下文。

不同的文件系统对文件的时间戳信息存储方式不同,因此%C@%T@的含义也略有不同。

在大多数常见的Linux文件系统中(如ext2/3/4、NTFS等),文件的时间戳信息包括:

  • 修改时间(modification time):文件内容最后一次被修改的时间戳。
  • 访问时间(access time):文件最后一次被访问的时间戳。
  • 状态改变时间(change time):文件元数据最后一次被修改的时间戳,包括文件权限、所有者等信息。

在这些文件系统中,%T@表示的是文件的修改时间,而%C@表示的是文件的状态改变时间。因此,它们的含义不完全相同,但是在大多数情况下,它们的差异不会对结果产生重大影响。

但是,对于一些支持Btrfs、XFS等新一代文件系统的系统,文件系统会记录文件的创建时间。在这些文件系统中,%T@%C@都无法输出文件的创建时间戳,必须使用%Tc%Cc来输出文件的创建时间。


已发布

分类

,

来自

标签:

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注