以树状格式递归列出文件并显示修改时间

以树状格式递归列出文件并显示修改时间

我正在寻找单一命令以递归方式列出给定目录中的所有文件及其修改时间。如果它能够以树状格式生成输出,那就太好了,就像命令。

笔记:我正在运行 Red Hat Enterprise Linux Server 版本 5。

编辑:选项-D命令打印仅有的过去几年的最后修改时间的日期部分,尽管它显示日期和时间今年。在这种情况下,我希望同时打印过去几年的日期和时间。

答案1

我正在寻找一个命令来从给定目录中递归列出所有文件及其修改时间。

$ find /path/to/folder -type f -print0 | xargs -0 ls -l --time-style="+%F %T"

如果它可以像 tree 命令一样以树状格式生成输出,那就太好了。就我而言,精确到分钟就足够了。

在我的 CentOS、Gentoo、... 上,-D选项已经在几分钟内显示:

$ tree -D
.
├── [Jul 26 14:41]  LICENSE
├── [Jul 26 14:41]  manifests
│   ├── [Oct 10 16:30]  defines
│   │   └── [Jul 26 14:41]  redis source.pp
│   └── [Jul 26 14:41]  init.pp
├── [Jul 26 14:41]  README
└── [Jul 26 14:41]  templates
    ├── [Jul 26 14:41]  redis.conf.erb
    └── [Jul 26 14:41]  redis-server.erb

3 directories, 6 files

答案2

此命令以递归方式列出给定目录中的所有文件及其完整修改时间:

ls -Rl --time-style=long-iso /path/to/directory

没有tree类似的输出,ls但这非常接近。

答案3

也许这可以作为您解决方案的起点:

\tree -nf  | awk '{printf $0} {system("stat -c \" [ %y ]\" " $NF )}'| sed -e 's#\([0-9][0-9]:[0-9][0-9]:[0-9][0-9]\).*#\1 ]#g'  2>/dev/null

答案4

从 1.6.0 版(05/24/11)开始,tree 支持该--timefmt[=]format选项。(-D选项输出奇怪的结果,有些行没有小时和分钟,有些行没有年份)
例如:

./tree --timefmt='%Y-%m-%d_%H:%M:%S'

[2024-03-19_19:50:43]  .
├── [2024-02-20_16:43:06]  a
├── [2023-12-27_14:20:23]  b
├── [2023-06-06_20:54:17]  c
├── [2023-09-17_19:49:48]  d
├── [2023-12-27_14:21:24]  e
├── [2024-02-12_21:23:56]  f
├── [2024-02-12_23:03:05]  g
├── [2024-02-26_20:50:12]  h
└── [2024-02-25_18:47:28]  i

1 directory, 9 files

相关内容