Chinaunix首页 | 论坛 | 博客
  • 博客访问: 103114068
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-04-18 23:19:05

作者:pvb1979   
在unix早期,很容易发生命令行缓存溢出地情况,导致'too many arguments'错误。
"find"(大量文件)"|" (管道) 给另一命令足够会导致改错误。
用xargs来解决
find . -type f -mtime -1 -print|xargs pr -n |lp

-l 和-n参数:
ls|xargs|xargs -n3   
ls|xargs -l3

l 和 n 的区别就是 
lk 由管道传递的k个参数为后接command组成1个long string的参数,参数数为1
而nk是作为后接command的参数,参数数为k。

针对问题就是:如果xargs的参数也遇到too many arguments时,就可以通过l或n来分解了。


-i  和 -I 参数
此两例功能相同
find ./ -type f -print | xargs -i mv -f {} ./newdir
find ./ -type f -print | xargs -I {} mv -f {} ./newdir


-i 表示 find 传递给xargs的结果 由{}来代替 
-I 我认为是和i差不多,可以这么认为 -i可以用-I {} 来代替


-p 交互式提问y来确认命令的每次执行。

-t 在执行前回显各个command

还有参数-s 和 -x ,请高人补充(用法和实例)
阅读(850) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~