【发布时间】:2021-12-27 17:07:17
【问题描述】:
path/mydir 包含目录列表。这些目录的名称告诉我它们与哪个数据库相关。
每个目录里面都有一堆文件,但是文件名告诉我什么都不重要。
我正在尝试在 linux bash 中编写一个完成以下任务的命令:
- 对于
path/mydir中的每个目录,查找该目录中最后修改文件的最大时间戳 - 在父目录名称旁边打印上次修改文件的时间戳
- 排除任何小于 30 天的时间戳
- 使用正则表达式排除特定目录名称
- 按最早的时间戳排序
鉴于path/mydir中的这个目录结构:
database_1
table_1.file (last modified 2021-11-01)
table_2.file (last modified 2021-11-01)
table_3.file (last modified 2021-11-05)
database_2
table_1.file (last modified 2021-05-01)
table_2.file (last modified 2021-05-01)
table_3.file (last modified 2021-08-01)
database_3
table_1.file (last modified 2020-01-01)
table_2.file (last modified 2020-01-01)
table_3.file (last modified 2020-06-01)
我想输出:
database_3 2020-06-01
database_2 2021-08-01
这一半有效,但查看的是父目录的修改日期,而不是目录下文件的最大时间戳:
find . -maxdepth 1 -mtime +30 -type d -ls | grep -vE 'name1|name2'
我是 bash 的新手,非常感谢任何帮助和指导!
【问题讨论】:
标签: bash shell file timestamp filemtime