首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在bash脚本中按修改日期排序当前目录的文件列表?

如何在bash脚本中按修改日期排序当前目录的文件列表?
EN

Stack Overflow用户
提问于 2022-02-28 15:44:53
回答 1查看 265关注 0票数 0

我想得到我当前目录中所有文件的列表(或数组),这些文件是按修改日期排序的。在终端中,类似于ls -lt的东西可以工作,但不应该在bash脚本(http://mywiki.wooledge.org/BashPitfalls#for_i_in_.24.28ls_.2A.mp3.29)中使用.

我尝试使用-nt opterator (https://tips.tutorialhorizon.com/2017/11/18/nt-file-test-operator-in-bash/),但我希望有一个更简单和优雅的解决方案。

EN

回答 1

Stack Overflow用户

发布于 2022-02-28 16:36:59

这可能对你有帮助:

带有GNU扩展的bash中的

创建数组

代码语言:javascript
复制
mapfile -d '' a < <(find -maxdepth 1 -type f "%T@ %p\0" | sort -z -k1,1g | cut -z -d ' ' -f2)

或者循环浏览文件:

代码语言:javascript
复制
while read -r -d '' _ file; do
   echo "${file}"
done < <(find -maxdepth 1 -type f "%T@ %p\0" | sort -z -k1,1g)

在这里,我们构建了一个以空字符作为分隔符的文件列表。字段本身由时代中的修改日期、空格和文件名组成。我们使用sort根据修改日期对列表进行排序。它的输出被传递给一个while循环,该循环将每个以零结尾的记录reads字段。第一个字段是我们在_中读取的修改日期,其余部分被传递给file

ZSH中的

如果要使用像zsh这样的另一个shell,只需执行以下操作:

代码语言:javascript
复制
a=( *(Om) )

代码语言:javascript
复制
for file in *(Om); do echo "${file}"; done

这里,Om是一个全局修饰符,它告诉ZSH按修改日期对输出进行排序。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71297518

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档