如何显式显示管道|返回的参数,以便在后续命令中使用它们



我有一个目录树,如下所示:

dir1
|---dir2-1
|---dir2-2
|---dir2-3
|--- ...

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

dir1
|---dir2-1
|---dir3-1
|---dir2-2
|---dir3-1
|---dir2-3
|---dir3-1
|--- ...

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

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

管道不传递任何参数;它从第一个命令中获取stdout,并将其连接到第二个命令的stdin。

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

find . -name 'dir2-*' -exec mkdir {}/dir3-1 ;

当然,为什么不呢:

find ./dir1 -maxdepth 2 -type d -name 'dir2-*' | xargs -d 'n' -I {} mkdir {}/dir3-1

最新更新