我想使用sort对文件名列表进行排序。 例如:
file.ext
file1.ext
z_file2.ext
使用sort,我得到了
file1.ext
file.ext
z_file2.ext
如何在 fileXXXX之前对文件。进行排序。?
答案 0 :(得分:3)
正如评论中所建议的,您的问题是您的语言环境会产生奇怪的排序顺序。将区域设置设置为C以进行排序可以解决问题:
LC_ALL=C sort
要获得更精确的修复,假设您要使用区域设置感知归类顺序但仍然在扩展名中分隔排序键,请将.
指定为字段分隔符并使用两个排序键:
sort -t. -k1,1 -k2
答案 1 :(得分:0)
您可以使用-d选项
从联系手册:
-d, --dictionary-order consider only blanks and alphanumeric characters
$ cat toto
file.ext
file1.ext
z_file2.ext
$ sort -d toto
file1.ext
file.ext
z_file2.ext
答案 2 :(得分:0)
您必须将文件名与数字分开,相应地对它们进行排序并合并回来
$ sed -r 's/([0-9]*)\./ &/' file | sort -k1,1 -k2n | sed 's/ //'
file.ext
file1.ext
z_file2.ext
z_file11.ext