使用
find
命令,我可以显示多个级别的目录名称。以下命令显示 /var
路径下的所有目录,深度为 2:
find /var -maxdepth 2 -type d;
结果显示:
/var
/var/log
/var/log/sssd
/var/log/samba
/var/log/audit
/var/log/ConsoleKit
/var/log/gdm
/var/log/sa
使用
stat
命令,我可以找到修改后的日期时间:
stat /var/log/samba | grep 'Modify:'
结果是:
Modify: 2014-01-02 11:21:27.762346214 -0800
有没有办法结合这两个命令,以便列出目录和修改的日期时间?
接受的答案有效,但速度很慢。不需要对每个目录都执行 stat,find 提供了修改日期,直接打印出来即可。这是一个相当快的等效命令:
find /var -maxdepth 2 -type d -printf "%p %TY-%Tm-%Td %TH:%TM:%TS %Tz\n"
您可以将
-exec
开关用于 find
,并使用 stat
开关定义 -c
的输出格式,如下所示:
find /var -maxdepth 2 -type d -exec stat -c "%n %y" {} \;
这应该在输出的同一行给出文件名,后跟其修改时间。
最新 GNU 版本的
find
还包含一个 -printf
选项,其中包含日期字段。 如果需要以标准“C”格式打印文件名和修改时间,可以使用-printf "%c %p\n"
。
如果您想要特定格式的日期,可以使用
%C
后跟字段字符。 例如,4 位数年份为 %CY
,其中 Y
是 4 位数年份的字符。%C
。 例如,YYYY-MM-DD 格式看起来像 %CY-%Cm-%Cd
。
查看手册页或在线文档了解更多详细信息。
这是一个工作示例:
find . -name favicon.ico -printf "%c %p\n"
find /var -maxdepth 2 -type d | xargs ls -oAHd
这是一种让基本
ls
命令显示完整目录路径的方法。 虽然 ls
具有用于递归搜索的 -R
参数,但使用 -l
或 -o
选项(至少在 OSX 中),路径不会显示在结果中,例如: ls -lR
。
我用来打印昨天修改的文件的另一个。 ls -ltr 给我更详细的信息,比如修改时间、用户等
find <my_dir> -mtime -1 -type f -print | xargs ls -ltr
尝试这条线:
find /var -maxdepth 2 -type d|xargs stat|grep -E 'File|Modi'
我在这里运行它,它输出:
....
File: ‘/var/cache/cups’
Modify: 2013-12-24 00:42:59.808906421 +0100
File: ‘/var/log’
Modify: 2014-01-01 12:41:50.622172106 +0100
File: ‘/var/log/old’
Modify: 2013-05-31 20:40:23.000000000 +0200
File: ‘/var/log/journal’
Modify: 2013-12-15 18:56:58.319351603 +0100
File: ‘/var/log/speech-dispatcher’
Modify: 2013-10-27 01:00:08.000000000 +0200
File: ‘/var/log/cups’
Modify: 2013-12-22 00:49:52.888346088 +0100
File: ‘/var/opt’
Modify: 2013-05-31 20:40:23.000000000 +0200
....
我发现这种格式的
-printf
是最好的:%TF %TH:%TM:%.2TS %p\n
它以
YYYY-MM-DD
格式显示日期,然后以 HH:MM:SS
格式显示时间,然后是文件名和新行
例如,此命令仅显示自午夜以来修改的目录(通过
-newermt
开关):
find /var -maxdepth 2 -type d -newermt $(date +%Y-%m-%d) -printf '%TF %TH:%TM:%.2TS %p\n'
现在在我的机器上返回以下内容:
2024-07-24 01:05:00 /var/lib/vnstat
2024-07-24 00:39:29 /var/lib/snapd
2024-07-24 00:59:47 /var/lib/smartmontools
2024-07-24 00:38:40 /var/lib/logrotate
2024-07-24 00:38:40 /var/backups
2024-07-24 00:38:40 /var/cache/cups
2024-07-24 00:38:40 /var/log
2024-07-24 00:38:40 /var/log/cups
2024-07-24 00:39:20 /var/tmp