Linux 基于文件名对文件进行排序
我正在尝试根据文件名对一些文件(而不是其中的内容)进行排序 我已经尝试了ls-v,但那只是根据数字对文件进行排序 例如,我正在尝试分类Linux 基于文件名对文件进行排序,linux,bash,Linux,Bash,我正在尝试根据文件名对一些文件(而不是其中的内容)进行排序 我已经尝试了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 在一位数前加一
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
在一位数前加一个零,排序很容易。 这可以通过sed实现
ls | sed -E 's/\.([0-9])\./\.0\1\./g' | sort | sed -E 's/\.0([0-9])\./\.\1\./g'
第一个sed在一位数前添加一个零,而第二个sed将其删除。使用密钥替换进行自定义排序
$ 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
通过管道使用ls和sort命令
例如
ls-l | sort-t-k2,2n这几乎是可能的。。。排序使用ASCII,当列中同时包含数字值和字符值时,字符优先<代码>排序-t-k2,2n但是如果我直接使用sort,它会正确地对文件中的内容进行排序。我只想根据文件名按顺序列出文件,但不想列出文件中的内容,因此将
ls
的输出导入排序
。。。