我已将一个大文本文件拆分为许多较小的文件集,以进行我正在进行的性能测试。有很多这样的目录:
/home/brianly/output-02 (contains 2 files myfile.chunk.00 and myfile.chunk.01)
/home/brianly/output-04 (contains 4 files...)
/home/brianly/output-06 (contains 6 files...)
值得注意的是,每个目录中的文件数量不断增加。我需要做的是针对输出目录中的每个文本文件运行可执行文件。针对单个文件的命令看起来像这样:
./myexecutable -i /home/brianly/output-02/myfile.chunk.00 -o /home/brianly/output-02/myfile.chunk.00.processed
这里的-i参数是输入文件,-o参数是输出位置。
在 C# 中,我将循环遍历目录获取每个文件夹中的文件列表,然后循环遍历它们以运行命令行。如何使用 bash 遍历这样的目录结构,并根据位置和该位置中的文件使用正确的参数执行命令?
对于这种事情我总是使用find和...一起xargs:
$ find output-* -name "*.chunk.??" | xargs -I{} ./myexecutable -i {} -o {}.processed
现在,由于您的脚本一次仅处理一个文件,因此使用-exec (or -execdir)直接与find正如已经建议的那样,同样有效,但我习惯使用xargs,因为当提供一次对多个参数进行操作的命令时,这通常会更有效。因此,它是一个非常有用的工具,可以放在腰带上,所以我认为应该提及它。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)