linux 命令find可以用来查找匹配文件,然后再执行一些相应的操作,使用起来很方便。
如果能把把查到的文件路径以参数的名称直接传递给后面的命令,类似管道的方式的话就更方便了。
find的帮助文件里面有这样的一个例子:
find /tmp -name core -type f -print0 | xargs -0 /bin/rm -f
很显然,find查到匹配的文件后,就执行了xargs做为了 rm命令的第一参数,也是最后一个参数。所以,可以顺利地执行。
假设,我想把匹配的文件复制到一个地方,该怎么办呢?问题的难点是:cp命令需要两个参数,如果你直接,用上面的方式,那么你xargs是作为第一参数呢,还是第二参数呢?
XXXX@XXXX-desktop:/tmp/shp_data$ find . -path .*line.* | xargs cp /tmp
cp: target `./guangxi/Back/Bguangxi_polyline.dbf' is not a directory
XXXX@XXXX-desktop:/tmp/shp_data$
所有,就需要让cp知道你的参数顺序,可以用下面的方法来实现:
XXXXX@XXXXX-desktop:/tmp/shp_data$ find . -path .*line.* | cp `xargs` /tmp
|----------------------------------------------------------------------------------------|
版权声明 版权所有 @zhyiwww
引用请注明来源 http://www.blogjava.net/zhyiwww
|----------------------------------------------------------------------------------------|
posted on 2009-12-17 11:04
zhyiwww 阅读(2057)
评论(0) 编辑 收藏 所属分类:
linux