在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 ,请高人补充(用法和实例)
|
|
|