ls | xargs -n 9 rm -rf
基本介绍
xargs 的全称是 “eXtended ARGuments”,它是一个常用的命令行实用程序。xargs 命令用于从标准输入或文件中读取数据,并将其作为参数传递给其他命令。
xargs 命令的设计初衷是为了解决一些命令行长度限制的问题。它可以将一系列输入数据分割成适当大小的块,并将这些块作为参数传递给其他命令进行处理。
xargs 命令最早是由 Doug McIlroy 在1979年开发的,作为AT&T Unix V7操作系统的一部分。然而,它在后来的UNIX和类UNIX系统中得到了广泛的采用,并成为了标准工具之一。
由于 xargs 是UNIX命令行工具的一部分,因此它没有具体的个人作者。它是在UNIX开发社区中的多个人员的贡献和合作下逐步发展和改进的。
xargs作用
xargs 是一个命令行实用工具,用于从标准输入中读取数据,并将其作为参数传递给其他命令。它的主要作用是将输入数据分割成单个参数,并将这些参数传递给指定的命令进行处理。
以下是 xargs 的一些常见用途和功能:
参数传递:
xargs从标准输入读取数据,并将其作为参数传递给指定的命令。这对于需要处理大量参数的命令非常有用,因为命令行有长度限制。分割输入:
xargs默认以空格为分隔符将输入数据分割成多个参数。可以使用-d选项指定自定义的分隔符。批量处理:
xargs可以批量处理输入数据。例如,您可以将xargs与其他命令(如rm、cp)结合使用,以一次性删除或复制多个文件。并行处理:使用
-P选项,xargs可以并行执行命令,从而提高处理速度。您可以指定并行处理的任务数。交互式操作:通过使用
-I选项,xargs可以将输入数据插入到命令中的指定位置,从而进行交互式操作。防止命令行过长:当命令行长度超过系统限制时,可以使用
xargs将输入数据分批传递给命令,以避免超出限制。
总而言之,xargs 是一个非常有用的工具,可以将输入数据转换为命令行参数,并提供一些选项和功能来处理和操作这些参数,从而简化命令行操作和提高效率。
举例说明其作用
以下是一些示例,说明 xargs 的作用:
批量删除文件:
1
2
3
4
5
6
7
8
9find . -name "*.txt" | xargs rm
```
上述命令使用 `find` 查找当前目录下所有扩展名为 `.txt` 的文件,并将它们的路径作为参数传递给 `xargs`,然后 `xargs` 将这些路径传递给 `rm` 命令,从而批量删除这些文件。
````
1. 并行压缩文件:find . -name “*.log” | xargs -P4 -I {} gzip {}
1
2
3
4
5
6
7
8
9
上述命令使用 `find` 查找当前目录下所有扩展名为 `.log` 的文件,并将它们的路径作为参数传递给 `xargs`。`-P4` 选项指定了并行执行的任务数为 4。`-I {}` 选项将文件路径插入到 `gzip` 命令中的 `{}` 位置,然后 `xargs` 并行执行 `gzip` 命令,压缩这些文件。
````
1. 批量创建目录:
`````
cat directories.txt | xargs mkdir上述命令使用
cat命令读取名为directories.txt的文件,该文件包含要创建的目录路径。然后,xargs将这些路径作为参数传递给mkdir命令,以批量创建这些目录。1
2
3
4
5
6
7
8
9
1. 从标准输入读取参数:
`````
echo "file1.txt file2.txt file3.txt" | xargs rm
```
上述命令使用 `echo` 输出一行包含文件名的字符串,并将其通过管道传递给 `xargs`。`xargs` 将字符串中的文件名作为参数传递给 `rm` 命令,以删除这些文件。
这些示例展示了 xargs 在不同场景下的作用,它能够将输入数据转换为命令行参数,并进行相应的处理和操作。请注意,在实际使用中,您应根据具体需求和情况来调整命令和参数。
使用xargs ,将下面这两行命令合二为一
1 | k -n xxx get pod -o wide |grep -v abcd |sed 1d |awk '{print $1}' > pod.list |
可以使用 xargs 命令将这两个命令合并为一个。下面是合并后的命令:
1 | k -n xxx get pod -o wide | grep -v abcd | sed 1d | awk '{print $1}' | xargs -I {} kubectl -n taskon logs {} > {}.log |
在这个命令中,xargs 用于将前面的命令的输出作为参数传递给后面的命令。-I {} 选项指定了一个占位符 {},它会被每个参数替换。kubectl -n taskon logs {} > {}.log 是要执行的命令,其中 {} 会被替换为每个从前面命令的输出中提取出的 pod 名称。
这样,每个 pod 的日志将会被保存到一个以 pod 名称命名的日志文件中,例如 pod1.log、pod2.log 等等。
原文链接: https://dashen.tech/2020/10/14/xargs命令的使用/
版权声明: 转载请注明出处.