linux根据时间生成文件名,关于shell:Linux按创建日期和给定文件名组合排序文件...

我需要将这些组合到命令中,以便按照使用指定的"文件名"创建的日期排序。

我知道按日期排序文件可以通过以下方式实现:

ls -lrt

并通过名称查找文件

find . -name"filename*"

我不知道如何将这两者结合起来。 我试过一个管道,但我没有得到正确的结果。

[编辑]

没有排序

143c8053c2f41b9c5981612f1a40c12e.png

find . -name"filename" -printf '%TY:%Tm:%Td %TH:%Tm %h/%f

' | sort

忘了xargs。"查找"和"排序"是您需要的所有工具。

谢谢,你是对的,而且更容易

不确定我是否同意更容易,除非您对-printf格式有一定的了解:)

嗯,你在这里学习东西,不是吗? 我甚至不记得find有一个-printf选项,直到我检查"man find"并注意到它。

谢谢,真棒

我最好的猜测是使用xargs:

find . -name 'filename*' -print0 | xargs -0 /bin/ls -ltr

参数的数量有一个上限,但它不应该是一个问题,除非它们占用超过32kB(在这里阅读更多),在这种情况下你将得到已排序文件的块:)

谢谢它使用xargs工作

+1:我很好奇你是如何到达'超过32k'的。 我怀疑限制小于那个。 IIRC,在Linux上,环境+命令行参数的总大小必须是128 KiB或更小,在这种情况下,长度为8个字符的文件名限制为16k左右。 然而,这是详细的,而不是一个主要的反对意见。

@JonathanLeffler你是对的,它应该是32kB(取决于系统,但似乎是一个合理的最小值),而不是32000个参数:)

可以通过运行getconf ARG_MAX找到exec arg size limit

find . -name"filename" -exec ls --full-time \{\} \; | cut -d' ' -f7- | sort

您可能必须根据ls输出的版本调整cut命令。

检查以下共享命令:

1)列出具有上次修改日期/时间的文件目录

要列出文件并在顶部显示最后修改的文件,我们将使用-lt选项和ls命令。

$ ls -lt /run

output

total 24

-rw-rw-r--.  1 root utmp 2304 Sep  8 14:58 utmp

-rw-r--r--.  1 root root    4 Sep  8 12:41 dhclient-eth0.pid

drwxr-xr-x.  4 root root  100 Sep  8 03:31 lock

drwxr-xr-x.  3 root root   60 Sep  7 23:11 user

drwxr-xr-x.  7 root root  160 Aug 26 14:59 udev

drwxr-xr-x.  2 root root   60 Aug 21 13:18 tuned

https://linoxide.com/linux-how-to/how-sort-files-date-using-ls-command-linux/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值