Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
以不同的顺序分析命令行参数 我有一个C++程序,它从BASH读取参数。 假设我有一个文件夹,其中包含一些具有两个不同扩展名的文件。 示例:file1.ext1 file1.ext2 file2.ext1 file2.ext2_C++_Bash_Command Line Arguments - Fatal编程技术网

以不同的顺序分析命令行参数 我有一个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
选项