如何明确管道返回的参数| 在后续命令中使用它们

Jul*_*lep 0 linux bash

我有一个看起来像这样的目录树:

dir1
  |---dir2-1
  |---dir2-2
  |---dir2-3
  |--- ...
Run Code Online (Sandbox Code Playgroud)

我只想dir3-1在每个当前的叶子下创建一个新目录dir2-X,结果是:

dir1
  |---dir2-1
        |---dir3-1
  |---dir2-2
        |---dir3-1
  |---dir2-3
        |---dir3-1
  |--- ...
Run Code Online (Sandbox Code Playgroud)

我可以用管道做到这一点|吗?我天真地试图通过 using$1来明确显示管道返回的参数,然后将它们与它们一起使用,mkdir但这似乎不是正确的语法。

我想做的精神是:find . -name dir2-* | xargs -n1 mkdir $1/dir3-1

wja*_*rea 5

管道不传递任何参数;它从第一个命令中获取标准输出并将其连接到第二个命令的标准输入。

使用xargs,您可以使用-I选项指定替换字段(请参阅KamilCuk 的回答),但它更易于使用find -exec{}用作替换字段。像这样的东西:

find . -name 'dir2-*' -exec mkdir {}/dir3-1 \;
Run Code Online (Sandbox Code Playgroud)