以不同的顺序解析命令行参数
parse command line arguments in a different order
我有一个从bash中读取参数的小型C++程序。假设我有一个文件夹,里面有两个不同扩展名的文件。示例:file1.ext1 file1.ext2 file2.ext1 file2.ext2…
如果我使用以下命令执行程序:./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
,或者使用其他排序标准。
或者,您也可以调整可执行文件以正确顺序处理命令行参数,但如果您已经有了可执行文件,我建议您使用第一种解决方案。
edit:这个命令也按词法排序:
$echo *.ext[1,2]
$file1.ext1 file1.ext2 file2.ext1 file2.ext2
相关文章:
- 如何在OMNET++中指定与命令行参数组合的输出文件名
- 如何处理linux终端中带有负号(-)的C++中的命令行参数
- 使用 C++ 将命令行参数拆分为参数/向量
- 如何在OMNET++中添加专门的命令行参数?
- 如何在不传递命令行参数的情况下在 c++ 中设置环境变量
- atoi() 在应用于大型命令行参数时会产生不正确的值
- 命令行参数,cant 或两个变量
- 在 Windows 中使用 boost::p rogram_options 从命令行参数读取 Unicode 字符
- 如何在 Android/NDK 上将命令行参数从 gradlew.bat 传递到 Clang
- 编写一个将 LLVM IR 文件作为命令行参数的程序
- 通过命令行参数获取llvm ir文件时面临问题
- 有没有办法根据命令行参数定义数组大小?运行时与编译时实例化?
- 如何在不使用文件扩展名的情况下使用命令行参数打开C++中的文本文件?
- 命令行参数在不到 3 个 LOC 中 int?
- 在命令行参数中使用引号
- 在VS2013中使用devenv (C++)传递命令行参数argv
- 二进制数据作为命令行参数
- 如何在 C++11 中创建具有命令行参数大小的动态数组?
- 需要有关如何设置getopt_long以正确传递命令行参数的建议
- Bash 脚本和命令行参数