xargs

本文介绍了xargs命令的多种应用场景,包括解决删除文件时参数过长的问题、结合find命令列出指定目录下的文件、批量下载URL列表中的资源及压缩特定类型的文件等。通过这些实例,读者可以更好地掌握xargs的强大功能。

xargs是给命令传递参数的一个过滤器,也是组合多个命令的一个工具。它把一个数据流分割为一些足够小的块,以方便过滤器和命令进行处理。通常情况下,xargs从管道或者stdin中读取数据,但是它也能够从文件的输出中读取数据。xargs的默认命令是echo,这意味着通过管道传递给xargs的输入将会包含换行和空白,不过通过xargs的处理,换行和空白将被空格取代。


1. 当你尝试用rm 删除太多的文件,你可能得到一个错误信息:/bin/rm Argument list too long. 用xargs 去避免这个问题

find ~ -name ‘*.log’ -print0 | xargs -0 rm -f


2. 获得/etc/ 下所有*.c 结尾的文件列表,有几种不同的方法能得到相同的结果,下面的例子仅仅是示范怎么实用xargs ,在这个例子中实用 xargs将find 命令的输出传递给ls -l

# find /etc -name "*.c" | xargs ls –l


3. 假如你有一个文件包含了很多你希望下载的URL, 你能够使用xargs 下载所有链接

# cat list.txt | xargs wget –c


4. 查找所有的jpg 文件,并且压缩它

# find / -name *.jpg -type f -print | xargs tar -cvzf images.tar.gz

### xargs命令的用途与用法 `xargs` 是 Linux 中一个非常实用的命令,它的主要作用是将标准输入转换为命令行参数。通过 `xargs`,可以将从标准输入中读取的数据作为参数传递给其他命令,从而实现批量处理。这对于处理大量文件或数据时非常有用。 #### 常见选项 - `-0` 或 `--null`:使用空字符(null)作为分隔符,通常与 `find` 命令的 `-print0` 选项配合使用。 - `-E`:设置一个字符串作为输入的结束标志。 - `-L`:指定每次传递给命令的行数。 - `-I`:指定一个替换字符串,用于替换输入中的参数。 #### 示例 1. **删除 `/tmp` 目录下所有名为 `core` 的文件** ```bash find /tmp -name core -type f -print0 | xargs -0 /bin/rm -f ``` 这个命令首先使用 `find` 查找所有名为 `core` 的文件,并使用 `-print0` 选项以空字符作为分隔符输出结果。然后 `xargs -0` 读取这些结果并删除这些文件[^1]。 2. **使用 `-E` 选项指定输入结束标志** ```bash echo -e "a\nb\nc" | xargs -E 'b' echo ``` 这个命令会输出 `a`,因为 `-E 'b'` 指定了输入在遇到 `b` 时结束[^1]。 3. **使用 `-L` 选项指定每次处理的行数** ```bash echo -e "a\nb\nc" | xargs -L 2 echo ``` 这个命令会将输入分成两行一组进行处理,输出为 `a b` 和 `c`[^1]。 4. **使用 `-I` 选项替换输入中的参数** ```bash cat /etc/group | grep admingroup | awk -F ':' '{print $3}' | xargs -I {} sh -c "cat /etc/passwd | grep {}" ``` 这个命令首先从 `/etc/group` 中查找 `admingroup` 的组ID,然后使用这个组ID在 `/etc/passwd` 中查找对应的用户信息[^1]。 5. **提取文件中的第一列并排序后输出** ```bash cut -d: -f1 < /tmp/test.log | sort | xargs echo ``` 这个命令等价于使用 `awk` 提取第一列并排序后输出。 ### 相关问题 1. 如何在 Linux 中使用 `find` 命令查找文件? 2. `xargs` 命令如何与 `find` 命令结合使用? 3. 如何在 Linux 中使用 `awk` 处理文本数据? 4. 如何在 Linux 中使用 `grep` 查找文本? 5. 如何在 Linux 中使用 `cut` 命令提取文本字段?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值