如何使用 shell 脚本对以下文件名进行排序?
abcd_exp_4_20180706.txt
abcd_exp_3_20180706.txt
abcd_exp_1_20180706.txt
abcd_exp_2_20180706.txt
abcd_exp_5_20180706.txt
abcd_exp_1_20180707.txt
abcd_exp_5_20180707.txt
abcd_exp_4_20180707.txt
abcd_exp_3_20180707.txt
abcd_exp_2_20180707.txt
预期产出
abcd_exp_1_20180706.txt
abcd_exp_2_20180706.txt
abcd_exp_3_20180706.txt
abcd_exp_4_20180706.txt
abcd_exp_5_20180706.txt
abcd_exp_1_20180707.txt
abcd_exp_2_20180707.txt
abcd_exp_3_20180707.txt
abcd_exp_4_20180707.txt
abcd_exp_5_20180707.txt
答案1
一般来说,解析 的输出ls
是馊主意。但是,如果您知道所有文件名都遵循相同的格式,那么这是一个合理的方法。
$ ls | sort -t_ -k4 -k3,3
解释
ls |
:将 ls 的输出通过管道传输到...sort -t_ -k4 -k3
:用作_
分隔符排序,首先按第四列(例如20180706.txt
),然后按第三列(例如1
)。