使用 printf 正确地将“find”的输出制成表格并按日期对它们进行排序

使用 printf 正确地将“find”的输出制成表格并按日期对它们进行排序

我正在gfindMacOS 上运行来查找文本文件。

我试图仅查看文件名和gfind结果的出生日期,然后按日期对它们进行排序,并对它们进行分页。这是可以实现的吗?

目前我正在尝试gfind . -name "*.txt" -printf "%f \t\t %Bc\n"

但结果如下:

todo.txt         Fri Mar  4 17:47:41 2022
99AC1EF5-6BE3-556B-8254-84A8764819E0.txt         Fri Mar  4 17:49:08 2022
chrome_shutdown_ms.txt       Fri Mar  4 17:48:07 2022
index.txt        Fri Mar  4 17:48:05 2022
index.txt        Fri Mar  4 17:48:05 2022
index.txt        Fri Mar  4 17:48:06 2022
index.txt        Fri Mar  4 17:47:46 2022
index.txt        Fri Mar  4 17:48:01 2022
index.txt        Fri Mar  4 17:48:01 2022
index.txt        Fri Mar  4 17:48:05 2022
index.txt        Fri Mar  4 17:48:05 2022
index.txt        Fri Mar  4 17:48:06 2022
index.txt        Fri Mar  4 17:48:06 2022
index.txt        Fri Mar  4 17:47:46 2022
index.txt        Fri Mar  4 17:48:06 2022
LICENSE.txt          Fri Mar  4 17:48:07 2022
english_wikipedia.txt        Fri Mar  4 17:48:07 2022
female_names.txt         Fri Mar  4 17:48:07 2022
male_names.txt       Fri Mar  4 17:48:07 2022

有没有一种方法可以将输出制成表格,以显示其外观的一致性?我只想以更优雅的方式显示文件名和生日。

预先非常感谢!

答案1

在这里,您可以使用:

gfind . -name '*.txt' -printf '%-40f %Bc\n'

或者

gfind . -name '*.txt' -printf '%40f %Bc\n'

要打印左对齐或右对齐的文件名,并用空格填充,长度为 40 个字节(不幸的是,不是字符,也不是列)。

只要文件名不包含控制字符、多字节字符、零宽度字符或双宽度字符,且长度不超过 40 个字节,就会对齐它们。

请注意,如果您将日期放在第一位(此处使用 mtime (%T),而不是 Btime (%B),我怀疑这是否是您想要的,因为它没有反映文件生命周期中的任何有用信息),然后使用更有用且明确的时间戳格式,例如标准 YYYY-MM-DDTHH:MM:SS[.subsecond]+ZZZZ,那么您不必担心对齐问题,并且它使排序更容易:

find . -name '*.txt' -printf '%TFT%TT%Tz %f\n'

相关内容