在linux终端中,如何显示文件夹的最后修改日期,考虑其内容?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在linux终端中,如何显示文件夹的最后修改日期,考虑其内容?相关的知识,希望对你有一定的参考价值。
所以这是交易。假设我有一个名为“web”的目录,所以
$ ls -la
drwx------ 4 rimmer rimmer 4096 2010-11-18 06:02 web
但是在这个目录里面,web / php /
$ ls -la
-rw-r--r-- 1 rimmer rimmer 1957 2011-01-05 08:44 index.php
这意味着即使我的目录/web/php/index.php的内容在2011-01-05上次修改,/ web /目录本身也会在2010-11-18报告为最后修改。
我需要做的是将我/ web /目录的最后修改日期报告为此目录中任何文件/目录的最新修改日期,递归。
我该怎么做呢?
答案
就像是:
find /path/ -type f -exec stat {} --printf="%y
" ; |
sort -n -r |
head -n 1
说明:
- find命令将打印每个文件的修改时间,递归地忽略目录(根据IQAndreas的注释,你不能依赖文件夹时间戳)
- 排序-n(数字)-r(反向)
- head -n 1:获得第一个条目
另一答案
如果你有一个支持find
的find
版本(例如GNU -printf
),则无需重复调用stat
:
find /some/dir -printf "%T+
" | sort -nr | head -n 1
要么
find /some/dir -printf "%TY-%Tm-%Td %TT
" | sort -nr | head -n 1
但是,如果您不需要递归,则:
stat --printf="%y
" *
另一答案
如果可以,我会投票支持保罗的答案。我测试了它并理解了这个概念。我可以确认它有效。 find
命令可以输出许多参数。例如,将以下内容添加到--printf
子句中:
%a for attributes in the octal format
%n for the file name including a complete path
例:
find Desktop/ -exec stat {} --printf="%y %n
" ; | sort -n -r | head -1
2011-02-14 22:57:39.000000000 +0100 Desktop/new file
让我提出这个问题:这个问题的作者是否想用Bash或PHP来解决他的问题?应该指明。
以上是关于在linux终端中,如何显示文件夹的最后修改日期,考虑其内容?的主要内容,如果未能解决你的问题,请参考以下文章