我需要将这些组合到命令中,以便按照使用指定的"文件名"创建的日期排序。
我知道按日期排序文件可以通过以下方式实现:
ls -lrt
并通过名称查找文件
find . -name"filename*"
我不知道如何将这两者结合起来。 我试过一个管道,但我没有得到正确的结果。
[编辑]
没有排序
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/