我有一个包含361个子目录的主目录。在每个子目录中,都有一个参数文件和一个可执行程序文件。可执行文件被编码为在可执行文件所在的目录中查找参数文件。 (所有子目录中都有相同的可执行文件。所有子目录中的参数文件都具有相同的文件名)

而不是单独执行程序文件,而是使用cshell命令让终端一次运行它们吗?

最佳答案

更新

如果您的Linux很旧,没有-execdir,则可以尝试以下操作:

find $(pwd) -name YourProgram -exec dirname {} \; | while read d; do cd "$d" && pwd; done


如果这样可以正确打印需要运行程序的目录的名称,只需删除pwd并替换为您希望在tha目录中执行的操作-大概是这样的:

find $(pwd) -name YourProgram -exec dirname {} \; | while read d; do cd "$d" && ./YourPrgram; done


原始答案

像这样:

find . -type f -name YourProgramName -execdir ./YourProgramName YourParameterFile \;


但是,请先备份并检查其外观,然后再使用。

-execdir导致find更改为找到的目录,然后再在该目录中运行命令。

如果您的命令更复杂,则可以执行以下操作:

 find . -type f -name YourProgramName -execdir sh -c "command1; command2; command3" \;


检查它是否符合您的要求:

 find . -type f -name YourProgramName -execdir pwd \;

09-04 05:50
查看更多