以不同的顺序分析命令行参数 我有一个C++程序,它从BASH读取参数。 假设我有一个文件夹,其中包含一些具有两个不同扩展名的文件。 示例:file1.ext1 file1.ext2 file2.ext1 file2.ext2
如果使用以下命令执行程序:以不同的顺序分析命令行参数 我有一个C++程序,它从BASH读取参数。 假设我有一个文件夹,其中包含一些具有两个不同扩展名的文件。 示例:file1.ext1 file1.ext2 file2.ext1 file2.ext2,c++,bash,command-line-arguments,C++,Bash,Command Line Arguments,如果使用以下命令执行程序:/readargs*.ext1 它将使用ext1读取所有文件 如果执行/readargs*.ext1*.ext2,它将读取所有的.ext1文件,然后读取所有的.ext2文件 我的问题是如何以如下顺序执行程序:file1.ext1 file1.ext2 file2.ext1 file2.ext2。。。我可以从命令行处理,还是需要在代码中处理 如果文件名的格式为file1.ext1 file1.ext2 file2.ext1 file2.ext2,则可以使用 echo *.
/readargs*.ext1
它将使用ext1读取所有文件
如果执行/readargs*.ext1*.ext2
,它将读取所有的.ext1文件,然后读取所有的.ext2文件
我的问题是如何以如下顺序执行程序:file1.ext1 file1.ext2 file2.ext1 file2.ext2。。。我可以从命令行处理,还是需要在代码中处理 如果文件名的格式为
file1.ext1 file1.ext2 file2.ext1 file2.ext2
,则可以使用
echo *.{ext1,ext2}|sort -u
上面给出了输出:
$ ll | grep ext
23880775 0 -rw-r--r-- 1 user users 0 Apr 29 13:28 file1.ext1
23880789 0 -rw-r--r-- 1 user users 0 Apr 29 13:28 file1.ext2
23880787 0 -rw-r--r-- 1 user users 0 Apr 29 13:28 file2.ext1
23880784 0 -rw-r--r-- 1 user users 0 Apr 29 13:28 file2.ext2
$ echo *.{ext1,ext2} | sort -u
file1.ext1 file2.ext1 file1.ext2 file2.ext2
然后复制输出并调用程序。但是如果您确实需要在.ext2
文件之前使用.ext1
文件,那么您必须确保.ext1
的字母顺序低于.ext2
,或者使用另一个排序标准
您还可以选择调整可执行文件,以正确的顺序处理命令行参数,但是如果您已经有了可执行文件,我建议您使用第一种解决方案作为解决方案
编辑:此命令也按词汇进行排序:
$echo *.ext[1,2]
$file1.ext1 file1.ext2 file2.ext1 file2.ext2
同样地,他应该能够使用
myApplication | sort
对应用程序的输出进行排序(我相信这是他想要的),谢谢你的回答,但它不起作用。它给出了与以前相同的顺序,是的.ext1不如.ext2添加一个额外的|tr''\n'|sort-u
以按排序获得列表-当您使用glob时,它会将它们全部放在同一行上,这阻止了排序发挥其排序的魔力。@John抱歉,忘记了-u
选项