首页 > 解决方案 > 获取目录中所有文件的名称、大小和时间戳

问题描述

我正在尝试获取主文件夹中所有文件夹中存在的所有文件的 3 个属性(大小、名称和时间戳)。

例如

MainFolder
   FolderA
          file1
          file2
          file3
   FolderB
          file4
          file5
          file6

输出应该是

file1|size|timestamp
file2|size|timestamp
file3|size|timestamp
file4|size|timestamp
file5|size|timestamp
file6|size|timestamp

有什么办法可以使用单个命令来完成吗?

标签: linux

解决方案


find . -type f | xargs stat --format='%n,%s,%.19x' * | awk '{split($0,a,","); split(a[1],B,"/"); print B[length(B)],"|",a[2],"|",a[3]}'

让我解释一下这 3 个部分,首先列出所有子目录中的所有文件:

find . -type f

然后生成 3 列,其中包含文件名(将包含完整路径)、大小(以字节为单位)和上次访问时间(我修剪为 19 个字符),如果您想要另一个时间戳,例如创建,只需按照此处所述更改 stat 命令的格式

xargs stat --format='%n,%s,%.19x' *

然后作为最后一步从文件名中删除路径:

awk '{split($0,a,","); split(a[1],B,"/"); print B[length(B)],"|",a[2],"|",a[3]}'

推荐阅读