我正在尝试根据文件名对某些文件(而不是内部内容)进行排序
我已经尝试过ls -v,但是只能根据数字对文件进行排序 我正在尝试排序
abc.adult.fasta
abc.1.1.fasta
abc.14.3.fasta
abc.3.2.fasta
数字是动物的年龄,因此成年动物应排在最后。
ls -v
结果应首先基于其实际数值,然后基于字母顺序。作为列表
abc.1.1.fasta
abc.3.2.fasta
abc.14.3.fasta
abc.adult.fasta
答案 0 :(得分:1)
在一个数字前面加一个零,排序很容易。 可以使用sed完成此操作。
ls | sed -E 's/\.([0-9])\./\.0\1\./g' | sort | sed -E 's/\.0([0-9])\./\.\1\./g'
第一个sed在一个数字前添加一个零,而第二个sed将其删除。
答案 1 :(得分:0)
使用密钥替换的自定义排序
$ ls -1 | sed 's/\.adult\./.99./' | sort -V | sed 's/\.99\./.adult./'
abc.1.1.fasta
abc.3.2.fasta
abc.14.3.fasta
abc.adult.fasta
答案 2 :(得分:0)
使用ls并通过管道排序命令。
例如
ls -l |排序-t。 -k2,2n