gpt4 book ai didi

linux - 使用 Linux bash 脚本语言获取目录上的排序文件列表

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:21:14 27 4
gpt4 key购买 nike

我需要列出指定目录中的文件,并根据每个文件名中嵌入的日期和时间对所有可用文件进行排序,而不是根据文件创建或修改日期/时间。我的文件具有以下格式:排序前

RATMS-RNSCA_npp_d20131208_t0408392_e0417432_b00001_c20131223024038606000_all-_dev.h5
RATMS-RNSCA_npp_d20131208_t0547506_e0557586_b00001_c20131223021256522000_all-_dev.h5
RCRIS-RNSCA_npp_d20131208_t0408392_e0417432_b00001_c20131223024038506000_all-_dev.h5
RCRIS-RNSCA_npp_d20131208_t0548226_e0557586_b00001_c20131223021256270000_all-_dev.h5
RNSCA-ROLPS_npp_d20131208_t0408334_e0417550_b00001_c20131223024038619000_all-_dev.h5
RNSCA-ROLPS_npp_d20131208_t0548233_e0558223_b00001_c20131223021256591000_all-_dev.h5
RNSCA-RONPS_npp_d20131208_t0408543_e0417005_b00001_c20131223024038636000_all-_dev.h5
RNSCA-RONPS_npp_d20131208_t0548391_e0558002_b00001_c20131223021256616000_all-_dev.h5
RNSCA-ROTCS_npp_d20131208_t0408168_e0417380_b00001_c20131223024038627000_all-_dev.h5
RNSCA-ROTCS_npp_d20131208_t0548017_e0558002_b00001_c20131223021256603000_all-_dev.h5
RNSCA-RVIRS_npp_d20131208_t0407405_e0417380_b00001_c20131223024038167000_all-_dev.h5
RNSCA-RVIRS_npp_d20131208_t0547150_e0558377_b00001_c20131223021256099000_all-_dev.h5

排序后(我的预期结果)

RATMS-RNSCA_npp_d20131208_t0408392_e0417432_b00001_c20131223024038606000_all-_dev.h5
RCRIS-RNSCA_npp_d20131208_t0408392_e0417432_b00001_c20131223024038506000_all-_dev.h5
RNSCA-ROLPS_npp_d20131208_t0408334_e0417550_b00001_c20131223024038619000_all-_dev.h5
RNSCA-RONPS_npp_d20131208_t0408543_e0417005_b00001_c20131223024038636000_all-_dev.h5
RNSCA-ROTCS_npp_d20131208_t0408168_e0417380_b00001_c20131223024038627000_all-_dev.h5
RNSCA-RVIRS_npp_d20131208_t0407405_e0417380_b00001_c20131223024038167000_all-_dev.h5

RATMS-RNSCA_npp_d20131208_t0547506_e0557586_b00001_c20131223021256522000_all-_dev.h5
RCRIS-RNSCA_npp_d20131208_t0548226_e0557586_b00001_c20131223021256270000_all-_dev.h5
RNSCA-ROLPS_npp_d20131208_t0548233_e0558223_b00001_c20131223021256591000_all-_dev.h5
RNSCA-RONPS_npp_d20131208_t0548391_e0558002_b00001_c20131223021256616000_all-_dev.h5
RNSCA-ROTCS_npp_d20131208_t0548017_e0558002_b00001_c20131223021256603000_all-_dev.h5
RNSCA-RVIRS_npp_d20131208_t0547150_e0558377_b00001_c20131223021256099000_all-_dev.h5

请注意上述每个文件名中的第3(dYYYYMMdd)和第4(thhmmssS)字段。前缀字母“d”表示日期,前缀“t”表示时间。

注意:'YYYYMMDD' 表示 strip 开始的日期(YYYY:4 位数年份;MM:月份;DD:月份中的第几天)。第一个和第二个'hhmmssS'分别代表 strip 的开始和结束(hh - 小时;mm:分钟;ss:秒;S:10 秒)。

我认为使用“YYYYMMdd_thh”组合可以满足我对文件列表进行排序的需求。我如何使用 Linux bash 脚本语言来做到这一点?

谢谢。

金李

最佳答案

您会爱上 bash。只需使用 sort 命令,您就可以传递“字段分隔符”并选择要排序的字段。

来自手册页:

-t, --field-separator=SEP use SEP instead of non-blank to blank transition

-k, --key=KEYDEF sort via a key; KEYDEF gives location and type

KEYDEF is F[.C][OPTS][,F[.C][OPTS]] for start and stop position, where F is a field number and C a character position in the field; both are origin 1, and the stop position defaults to the line's end. If neither -t nor -b is in effect, characters in a field are counted from the beginning of the preceding whitespace. OPTS is one or more single-let‐ ter ordering options [bdfgiMhnRrV], which override global ordering options for that key. If no key is given, use the entire line as the key.

所需的参数将变为:

sort -t '_' -k 3,4 you_data_file

所以我们将您的数据划分为下划线字段,并首先按第 3 个字段(日期)排序,然后按第 4 个字段(时间)排序。因为您提供了一种精度越来越高的日期和时间格式,所以只需按字母顺序排序即可。

关于linux - 使用 Linux bash 脚本语言获取目录上的排序文件列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21350408/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com