如何使用 shell 脚本对以下文件名进行排序?

如何使用 shell 脚本对以下文件名进行排序?

如何使用 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)。

相关内容