分页: 1 / 2

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

发表于 : 2009-05-08 0:03
pshvvvv
1.如果将管道的结果传递给多参数的命令呢??

打个比方:我用grep搜索 然后将搜索到的结果全部拷贝到一个地方,,也就是说我如何将搜索到的结果传递给COPY的源呢??查了资料 没查到 请知道的指点下,谢谢!!! :em03 :em03

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

发表于 : 2009-05-08 0:35
darasion
搜索用 find 来做阿。

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

代码: 全选

find /etc -type f -name *.conf -exec cp {} ~/Documents/ \;
注意后边的 \; 以及\;前边的空格不可省略。[/size]

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

发表于 : 2009-05-08 0:45
pshvvvv
-exec,可以执行命令。。我怎么没想到 :em02 恩,谢谢拉


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

恩,谢谢了 :em11 ,我去实验下

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

发表于 : 2009-05-08 0:52
jioyo源
pshvvvv 写了:-exec,可以执行命令。。我怎么没想到 :em02 恩,谢谢拉


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

恩,谢谢了 :em11 ,我去实验下
find下{}表示当然所找到的文件名……

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

发表于 : 2009-05-08 6:37
aerofox
也可以用 cpio:

代码: 全选

find . -name '*.conf' | cpio -pd target_directory
grep some_pattern file | cpio -pd target_directory

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

发表于 : 2009-05-08 11:19
pshvvvv
这个find命令 为什么我改为其他类型 必须加单引号‘ 不加不行 双引号“也不行???

可是直接搜索*.conf 什么不加就能搜出来,奇怪啊

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

发表于 : 2009-05-08 12:21
bones7456
xargs也可以参考下

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

发表于 : 2009-05-08 19:46
pshvvvv
我第二个问题,怎么没人回答 :em25

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

发表于 : 2009-05-08 20:47
eexpress
整理下吧。都不知道你什么问题了。题目都转向了。

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

发表于 : 2009-05-08 23:04
pshvvvv
:em03

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

发表于 : 2009-05-08 23:17
aerofox
pshvvvv 写了:这个find命令 为什么我改为其他类型 必须加单引号‘ 不加不行 双引号“也不行???

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

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

发表于 : 2009-05-08 23:17
aerofox
pshvvvv 写了:我第二个问题,怎么没人回答 :em25
第二个问题没看懂你的意图。

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

发表于 : 2009-05-08 23:36
jioyo源

代码: 全选

2.如何我搜索文件,我如果将我搜索到的文件的文件名取出来呢?比如我把搜索到的名字重定向到一个文件夹
你是想把文件名重定向到一个文件,还是想给文件定向到文件夹……

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

发表于 : 2009-05-09 10:04
HuaChong
不加单引号也是可以的,只不过*要转义一下不要被bash认出来就可以了,比如楼上的回答也可以这样

代码: 全选

find -name \*.conf#其他略

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

发表于 : 2009-05-09 10:18
BigSnake.NET
xargs

eg.

find -print0 | xargs -0 stat