linux - 根据文件名对文件进行排序

标签 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

最佳答案

一位数前面有一个零,排序很容易。 这可以使用 sed 来完成。

ls | sed -E 's/\.([0-9])\./\.0\1\./g' | sort | sed -E 's/\.0([0-9])\./\.\1\./g'

第一个 sed 在一位数前面添加一个零,而第二个将其删除。

关于linux - 根据文件名对文件进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54694941/

相关文章:

Linux I2C-Dev IOCTL-Call 产生错误消息

python - 为什么我的 mysqldb 代码不工作?没有错误信息,没有数据

linux - 登录后自动运行 Bash 脚本以同步 Git 存储库

php - FastCGI PHP7.2 在 Windows 上总是超时 Nginx Bash ubuntu

bash - 在 ~/.bashrc 中设置变量并在 shell 脚本中访问它们

python - 从 .bashrc 执行时如何使工作的 python 程序无错误地运行

linux - Kubernetes:编织网络未安装

linux - 如何在 Fedora 系统中每小时运行一个 Perl 脚本。我有一个 perl 脚本,它将检查 IP 中的端口是否打开

bash - .bashrc 中断,在 shell 中输入的第二行吃掉了第一行

bash - bash中的 "else if"和 "elif"有什么区别?