Bash:如何遍历目录结构并执行命令?

Bri*_*tle 8 linux directory bash command-line traversal

我已经将一个大文本文件拆分成了许多较小的文本文件,用于我正在进行的性能测试.有很多这样的目录:

/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...)
Run Code Online (Sandbox Code Playgroud)

值得注意的是,每个目录中的文件数量都在增加.我需要做的是对输出目录中的每个文本文件运行一个可执行文件.该命令对于单个文件看起来像这样:

./myexecutable -i /home/brianly/output-02/myfile.chunk.00 -o /home/brianly/output-02/myfile.chunk.00.processed
Run Code Online (Sandbox Code Playgroud)

这里-i参数是输入文件,-o参数是输出位置.

在C#中,我循环遍历目录,获取每个文件夹中的文件列表,然后循环遍历它们以运行命令行.如何使用bash遍历这样的目录结构,并根据该位置的位置和文件使用正确的参数执行命令?

Lar*_*eth 8

对于这种事情我总是用发现连同xargs的:

$ find output-* -name "*.chunk.??" | xargs -I{} ./myexecutable -i {} -o {}.processed
Run Code Online (Sandbox Code Playgroud)

现在因为你的脚本一次只处理一个文件,所以使用-exec(或-execdir)直接使用find,就像已经建议的那样,效率也很高,但是我习惯使用xargs,因为这通常更有效率一次操作多个参数的命令.因此,它是一个非常有用的工具,保持在一个人的实用带,所以我认为它应该被提及.


小智 7

就像是:

for x in `find /home/brianonly -type f`
do
./yourexecutable -i $x -o $x.processed
done
Run Code Online (Sandbox Code Playgroud)