关于管道传递结果的疑问?

sh/bash/dash/ksh/zsh等Shell脚本
头像
pshvvvv
帖子: 308
注册时间: 2009-02-23 21:58
联系:

关于管道传递结果的疑问?

#1

帖子 pshvvvv » 2009-05-08 0:03

1.如果将管道的结果传递给多参数的命令呢??

打个比方:我用grep搜索 然后将搜索到的结果全部拷贝到一个地方,,也就是说我如何将搜索到的结果传递给COPY的源呢??查了资料 没查到 请知道的指点下,谢谢!!! :em03 :em03
上次由 pshvvvv 在 2009-06-11 14:56,总共编辑 1 次。
选择之前,选择最重要;选择之后,坚持最重要!!!
只有偏执狂才能成功!!!
头像
darasion
帖子: 1153
注册时间: 2007-12-05 12:25

Re: 关于管道传递结果的疑问?

#2

帖子 darasion » 2009-05-08 0:35

搜索用 find 来做阿。

比如我要从/etc里边查找*.conf文件,全部复制到~/Documents/目录,就可以这样:

代码: 全选

find /etc -type f -name *.conf -exec cp {} ~/Documents/ \;
注意后边的 \; 以及\;前边的空格不可省略。[/size]
头像
pshvvvv
帖子: 308
注册时间: 2009-02-23 21:58
联系:

Re: 关于管道传递结果的疑问?

#3

帖子 pshvvvv » 2009-05-08 0:45

-exec,可以执行命令。。我怎么没想到 :em02 恩,谢谢拉


对了,可以直接用{}来代替吗?还是只能用find,不能用其他过滤器?

恩,谢谢了 :em11 ,我去实验下
选择之前,选择最重要;选择之后,坚持最重要!!!
只有偏执狂才能成功!!!
头像
jioyo源
帖子: 3476
注册时间: 2008-10-08 13:48

Re: 关于管道传递结果的疑问?

#4

帖子 jioyo源 » 2009-05-08 0:52

pshvvvv 写了:-exec,可以执行命令。。我怎么没想到 :em02 恩,谢谢拉


对了,可以直接用{}来代替吗?还是只能用find,不能用其他过滤器?

恩,谢谢了 :em11 ,我去实验下
find下{}表示当然所找到的文件名……
--------------------------------------
论坛精华贴全集:http://forum.ubuntu.org.cn/viewtopic.php?f=48&t=199845
book:http://forum.ubuntu.org.cn/viewtopic.php?f=21&t=198286
aerofox
帖子: 1453
注册时间: 2008-05-24 8:30

Re: 关于管道传递结果的疑问?

#5

帖子 aerofox » 2009-05-08 6:37

也可以用 cpio:

代码: 全选

find . -name '*.conf' | cpio -pd target_directory
grep some_pattern file | cpio -pd target_directory
头像
pshvvvv
帖子: 308
注册时间: 2009-02-23 21:58
联系:

Re: 关于管道传递结果的疑问?

#6

帖子 pshvvvv » 2009-05-08 11:19

这个find命令 为什么我改为其他类型 必须加单引号‘ 不加不行 双引号“也不行???

可是直接搜索*.conf 什么不加就能搜出来,奇怪啊
选择之前,选择最重要;选择之后,坚持最重要!!!
只有偏执狂才能成功!!!
头像
bones7456
帖子: 8495
注册时间: 2006-04-12 20:05
来自: 杭州
联系:

Re: 关于管道传递结果的疑问?

#7

帖子 bones7456 » 2009-05-08 12:21

xargs也可以参考下
关注我的blog: ε==3
头像
pshvvvv
帖子: 308
注册时间: 2009-02-23 21:58
联系:

Re: 关于管道传递结果的疑问?

#8

帖子 pshvvvv » 2009-05-08 19:46

我第二个问题,怎么没人回答 :em25
选择之前,选择最重要;选择之后,坚持最重要!!!
只有偏执狂才能成功!!!
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

Re: 关于管道传递结果的疑问?

#9

帖子 eexpress » 2009-05-08 20:47

整理下吧。都不知道你什么问题了。题目都转向了。
● 鸣学
头像
pshvvvv
帖子: 308
注册时间: 2009-02-23 21:58
联系:

Re: 关于管道传递结果的疑问?

#10

帖子 pshvvvv » 2009-05-08 23:04

:em03
选择之前,选择最重要;选择之后,坚持最重要!!!
只有偏执狂才能成功!!!
aerofox
帖子: 1453
注册时间: 2008-05-24 8:30

Re: 关于管道传递结果的疑问?

#11

帖子 aerofox » 2009-05-08 23:17

pshvvvv 写了:这个find命令 为什么我改为其他类型 必须加单引号‘ 不加不行 双引号“也不行???

可是直接搜索*.conf 什么不加就能搜出来,奇怪啊
应该是单引号和双引号都可以,除非你想搜索带 $ 符号的文件名,它应该用单引号。
至于 *.conf 可以不加引号,是因为你在执行 find 命令时,当前目录下没有以 .conf 结尾的文件名,这样它就原样传给了 find。
aerofox
帖子: 1453
注册时间: 2008-05-24 8:30

Re: 关于管道传递结果的疑问?

#12

帖子 aerofox » 2009-05-08 23:17

pshvvvv 写了:我第二个问题,怎么没人回答 :em25
第二个问题没看懂你的意图。
头像
jioyo源
帖子: 3476
注册时间: 2008-10-08 13:48

Re: 关于管道传递结果的疑问?

#13

帖子 jioyo源 » 2009-05-08 23:36

代码: 全选

2.如何我搜索文件,我如果将我搜索到的文件的文件名取出来呢?比如我把搜索到的名字重定向到一个文件夹
你是想把文件名重定向到一个文件,还是想给文件定向到文件夹……
--------------------------------------
论坛精华贴全集:http://forum.ubuntu.org.cn/viewtopic.php?f=48&t=199845
book:http://forum.ubuntu.org.cn/viewtopic.php?f=21&t=198286
头像
HuaChong
帖子: 493
注册时间: 2006-09-12 17:10

Re: 关于管道传递结果的疑问?

#14

帖子 HuaChong » 2009-05-09 10:04

不加单引号也是可以的,只不过*要转义一下不要被bash认出来就可以了,比如楼上的回答也可以这样

代码: 全选

find -name \*.conf#其他略
头像
BigSnake.NET
帖子: 12522
注册时间: 2006-07-02 11:16
来自: 廣州
联系:

Re: 关于管道传递结果的疑问?

#15

帖子 BigSnake.NET » 2009-05-09 10:18

xargs

eg.

find -print0 | xargs -0 stat
^_^ ~~~
要理解递归,首先要理解递归。

地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。
回复