按年份列出文件

按年份列出文件

我正在寻找有关命令的帮助。我有一个很大的文件目录。我想做的就是对这些进行更好的排序。

例如,我想查看我有多少个具有唯一年份的文件和目录(所以我想我最终会得到一系列年份的输出)。

我一直在尝试通过列表ls -l添加,grepls -l | grep -c它是吸引我的独特日期。

有人帮忙吗?

答案1

尝试使用:

ls -l --time-style=long-iso | grep -c ' 2017-'

将 2017 替换为您想要的任何 4 位数年份。该--time-style选项将导致 ls 打印ISO 8601时间戳而不是默认情况下简短、模糊的人类可读的内容。然后,传递给 grep 的表达式将与时间戳开头的年份相匹配,并且应该只提取当年修改的文件的行(前提是您没有以这四位数字开头,后跟破折号的文件名)。

请注意,这可能只适用于 GNU 实现ls(我知道它不适用于 busybox、FreeBSD、NetBSD 或 MINIX 实现,而且我很确定它不适用于 Solaris 实现)任何一个)。

根据评论中的要求,可以使用以下(又长又复杂的)命令来获取所代表的各个年份的数量:

ls -l --time-style=long-iso | tail +2 |  sed -n 's/  */ /gp' - | cut -d ' ' -f 6 | cut -d '-' -f 1 | sort -u | wc -l

tail 命令删除显示总计的第一行(无用)。 sed 命令将连续空格折叠为单个空格。第一个 cut 命令提取年-月日字段,第二个命令仅提取年份,然后 sort 命令将其缩减为每年的一个实例,而 wc 命令最终输出数字。

相关内容