xargs用法(一)

一直不会用 linux 中的xargs ,管道和xargs到底有什么区别?管道不就是把前一个命令的结果作为参数给下一个命令吗,那在 | 后面加不加xargs有什么区别?


1. 官方解释

1) 第一种解释NewUserFF 写道:
懒蜗牛Gentoo 写道:
管道是实现“将前面的标准输出作为后面的标准输入”
xargs是实现“将标准输入作为命令的参数”


2)第二种解释

xargs是一条Unix和类Unix操作系统的常用命令。它的作用是将参数列表转换成小块分段传递给其他命令,以避免参数列表过长的问题

顾名思义: 就是Linux 命令当输入参数过长的时候会报:“命令参数列表过长” 使用xargs就不会有这样的错误


 2. 个人解释

1) linux中有些命令是接受输入的,但是有些命令不接受,比如 ls -l 并不接受,而cat是接受的(单纯输入 cat 会发现liunx等待用户输入)

管道是实现“将前面的标准输出作为后面的标准输入”,也就是说如果管道后面的命令不接受用户输入,那只使用关掉是没有任何意义的。

eg: find . -type d | ls -l 其实就相当于管道以前的内容是没有任意意义的,相当于 ls -l 

加入了xargs就不一样了。就会把前面的输出当命令的参数

2) 再说xargs是将参数列表转换成小块分段传递给其他命令,以避免参数列表过长的问题


3. 举例说明

Linux目录如下显示:

使用命令显示当前目前下文件/文件夹以及嵌套的文件/文件夹 可以使用

MacBook-Pro:xargs zhangyajun$ ls -l -R
total 16
drwxr-xr-x  6  staff  204 11 17 14:34 a
drwxr-xr-x  4  staff  136 11 17 14:19 b
-rw-r--r--  1  staff   11 11 17 14:17 d.txt
-rw-r--r--  1  staff   12 11 17 14:17 e.txt


./a:
total 8
drwxr-xr-x  3  staff  102 11 17 14:34 a
-rw-r--r--  1  staff    0 11 17 14:18 a.txt
drwxr-xr-x  2  staff   68 11 17 14:34 b
-rw-r--r--  1  staff   13 11 17 14:18 b.txt


./a/a:
total 0
-rw-r--r--  1  staff  0 11 17 14:34 a.txt


./a/b:


./b:
total 8
-rw-r--r--  1  staff   0 11 17 14:19 a.txt
-rw-r--r--  1  staff  13 11 17 14:19 b.txt

用别的方式可以吗?

第一步: 显示当前目录下的文件夹 

MacBook-Pro:xargs$ find . -type d
.
./a
./a/a
./a/b
./b

第二步: 显示第一步中每一个文件夹中的文件/文件夹

这里如果光使用管道的话结果显示如下:

MacBook-Pro:xargs zhangyajun$ find . -type d | ls -l
total 16
drwxr-xr-x  6  staff  204 11 17 14:34 a
drwxr-xr-x  4  staff  136 11 17 14:19 b
-rw-r--r--  1  staff   11 11 17 14:17 d.txt
-rw-r--r--  1  staff   12 11 17 14:17 e.txt

明显并没有将 find . -type d 的结果作为ls -l 的参数

下面使用  xargs和管道结合

MacBook-Pro:xargs zhangyajun$ find . -type d |xargs ls -l
.:
total 16
drwxr-xr-x  6  staff  204 11 17 14:34 a
drwxr-xr-x  4  staff  136 11 17 14:19 b
-rw-r--r--  1  staff   11 11 17 14:17 d.txt
-rw-r--r--  1  staff   12 11 17 14:17 e.txt


./a:
total 8
drwxr-xr-x  3  staff  102 11 17 14:34 a
-rw-r--r--  1  staff    0 11 17 14:18 a.txt
drwxr-xr-x  2  staff   68 11 17 14:34 b
-rw-r--r--  1  staff   13 11 17 14:18 b.txt


./a/a:
total 0
-rw-r--r--  1  staff  0 11 17 14:34 a.txt



./a/b:


./b:
total 8
-rw-r--r--  1 zhangyajun  staff   0 11 17 14:19 a.txt
-rw-r--r--  1 zhangyajun  staff  13 11 17 14:19 b.txt


4. 补充

 xargs还有别的用法,本文只简单的介绍一下,后续会陆续增加 xargs 的用法




参考:

http://blog.sina.com.cn/s/blog_8317516b010103fx.html 这篇文章写的很好,很详细,推荐给大家哦

http://blog.csdn.net/yongan1006/article/details/8134581#comments


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值