xargs
管道是实现“将前面的标准输出作为后面的标准输入
xargs是实现“将标准输入作为命令的参数
之所以能用到这个命令,关键是由于很多命令不支持|管道来传递参数
你可以试试运行:
代码:
echo "--help"|cat ---直接打印出--help
echo "--help"|xargs cat --- 打开了cat的帮助文档
参数选项:
-
-0 当sdtin含有特殊字元时候,将其当成一般字符,像“空格”
-
-a 从文件中读入作为sdtin
-
-n num 后面加次数,表示命令在执行的时候一次用的argument的个数,默认是用所有的
-
-p 操作具有可交互性,每次执行comand都交互式提示用户选择,当每次执行一个argument的时候询问一次用户
-
-i 或者是-I,这得看linux支持了,将xargs的每项名称,一般是一行一行赋值给{},可以用{}代替。
man 手册:
-
-d delim 分隔符,默认的xargs分隔符是回车,argument的分隔符是空格,这里修改的是xargs的分隔符
xargs 各种用法:
-
用rm 删除太多的文件,你可能得到一个错误信息:/bin/rm Argument list too long. 用xargs 去避免这个问题
$find ~ -name ‘*.log’ -print0 | xargs -i -0 rm -f {}
-
查找文件并压缩
查找当前目录下所有.c文件find ./ -name "*.c"
查找并打包压缩:find ./ -name "*.c" | xargs tar -zcvf fin.tar.gz
假如你有一个文件包含了很多你希望下载的URL, 你能够使用xargs 下载所有链接
cat url-list.txt | xargs wget –c
把指定文件拷贝到指定目录
find -name "*.txt" | xargs -i cp {} /home/doc