在终端中编写命令时,如何在Ubuntu中管道命令及其结果.我会按顺序编写以下命令 -
$ ls | grep ab
abc.pdf
cde.pdf
$ cp abc.pdf cde.pdf files/
Run Code Online (Sandbox Code Playgroud)
我想将第一个命令的结果传递给第二个命令,并将它们全部写在同一行中.我怎么做 ?
就像是
$ cp "ls | grep ab" files/
Run Code Online (Sandbox Code Playgroud)
(以上是一个人为的例子,可以写成cp *.pdf files/)
好吧,因为xargs人放弃了,我将提供我的xargs解决方案:
ls | grep ab | xargs echo | while read f; do cp $f files/; done
Run Code Online (Sandbox Code Playgroud)
当然,这个解决方案有一个明显的缺陷:带有空格的文件会导致混乱.
没有这个漏洞的xargs解决方案?嗯...
ls | grep ab | xargs '-d\n' bash -c 'docp() { cp "$@" files/; }; docp "$@"'
Run Code Online (Sandbox Code Playgroud)
看起来有点笨拙,但它确实有效.除非你的文件中有回报,我的意思是.但是,任何这样做的人都应该得到他们所得到的.即使这是可以解决的:
find . -mindepth 1 -maxdepth 1 -name '*ab*' -print0 | xargs -0 bash -c 'docp() { cp "$@" files/; }; docp "$@"'
Run Code Online (Sandbox Code Playgroud)