不支持parallel命令
时间: 2023-11-25 15:04:17 浏览: 40
如果不支持parallel命令,可以使用xargs命令代替,具体步骤如下:
1. 使用find命令查找所有的tar.gz文件并输出文件路径,然后使用xargs命令并行处理每个文件:
```bash
find /data -name '*.tar.gz' -print0 | xargs -0 -P4 -I {} sh -c "tar -xzf {} -O | awk -F '|' '{print \$20+\$21}'"
```
这条命令会在/data目录下查找所有的.tar.gz文件,并使用xargs命令并行处理每个文件,-P4参数表示使用4个进程并行处理。
2. 如果需要输出每个文件的结果,可以在xargs命令中加入echo:
```bash
find /data -name '*.tar.gz' -print0 | xargs -0 -P4 -I {} sh -c "echo {}; tar -xzf {} -O | awk -F '|' '{print \$20+\$21}'"
```
这样就会在结果中输出每个文件的名称。
3. 如果需要将结果保存到文件中,可以使用重定向符号">":
```bash
find /data -name '*.tar.gz' -print0 | xargs -0 -P4 -I {} sh -c "echo {}; tar -xzf {} -O | awk -F '|' '{print \$20+\$21}'" > result.txt
```
这样就会将所有结果保存到result.txt文件中。
注意,上述命令中的awk命令使用了-F参数来指定分隔符为"|",$20和$21分别表示第20和21个字段。由于$符号在bash中有特殊含义,因此需要使用反斜杠来转义。