清单文件是linux的特定顺序

清单文件是linux的特定顺序,linux,bash,file-listing,Linux,Bash,File Listing,我想请你帮我写一些剧本。 我在一个目录中有一个文件扩展名: 1_of_meany_files.ext 2_of_meany_files.ext 3_of_meany_key1_files.ext 5_of_meany_files.ext 6_key2_of_meany_files.ext 现在,我正在尝试使用这些文件的列表构建file.txt,但具体顺序如下: 3_of_meany_key1_files.ext 6_key2_of_meany_files.ext 1_of_meany_file

我想请你帮我写一些剧本。 我在一个目录中有一个文件扩展名:

1_of_meany_files.ext
2_of_meany_files.ext
3_of_meany_key1_files.ext
5_of_meany_files.ext
6_key2_of_meany_files.ext
现在,我正在尝试使用这些文件的列表构建file.txt,但具体顺序如下:

3_of_meany_key1_files.ext
6_key2_of_meany_files.ext
1_of_meany_files.ext
2_of_meany_files.ext
5_of_meany_files.ext
我将非常感谢你的帮助。 谢谢 马辛

==编辑==

嗨,谢谢你的帮助。 脚本运行良好。但我有一个问题: 如果关键字里面有一个数字,它就工作得很好。 但是关键字可以没有数字S114或S_114 那么这些脚本就不起作用了。我能用这个做什么? 我想对文件进行排序,并用S114或S_114键将其中一个文件放在列表的顶部。 因此,排序后的文件可以如下所示:

选择一

    one_file_S114_text.ext
    rest_of_files_1.ext
    rest_of_files_2.ext
    rest_of_files_3.ext
选择二

    one_file_S_114_text.ext
    rest_of_files_1.ext
    rest_of_files_2.ext
    rest_of_files_3.ext
目录中只能有一个带密钥的文件,但密钥可以是S114或S_114

谢谢你的时间
关于Marcin,这有点棘手,因为您希望文件最后没有键,所以不能在awk命令中只打印$2+0,$0。但是,此awk分拣切割管道应满足您的要求:

$ printf "%s\n" * | awk -F'_key' '{print $2+0==0?1000000:$2+0,$0}'| sort -n | cut -d' ' -f 2-
3_of_meany_key1_files.ext
6_key2_of_meany_files.ext
1_of_meany_files.ext
2_of_meany_files.ext
5_of_meany_files.ext

这有点棘手,因为您希望文件最后没有键,所以不能在awk命令中只打印$2+0,$0。但是,此awk分拣切割管道应满足您的要求:

$ printf "%s\n" * | awk -F'_key' '{print $2+0==0?1000000:$2+0,$0}'| sort -n | cut -d' ' -f 2-
3_of_meany_key1_files.ext
6_key2_of_meany_files.ext
1_of_meany_files.ext
2_of_meany_files.ext
5_of_meany_files.ext
使用perl:

perl -e 'print"$_\n"for sort{($a=~/key(\d+)/?$1:1e+9)-($b=~/key(\d+)/?$1:1e+9)}<*>'
使用perl:

perl -e 'print"$_\n"for sort{($a=~/key(\d+)/?$1:1e+9)-($b=~/key(\d+)/?$1:1e+9)}<*>'

我不明白你想要的订单。你想根据什么标准对它们进行排序?我不想在列表的顶部有一个带键1的文件,第二个带键2的文件。对于其余的文件,我不需要特殊的顺序,可以直接从ls命令。我不理解所需的顺序。你想根据什么标准对它们进行排序?我不想在列表的顶部有一个带键1的文件,第二个带键2的文件。对于其余的文件,我不需要特殊的命令可以直接从ls命令。