Linux xargs命令教程及示例

xargs是一个可以在大多数Linux和BSD操作系统中找到的命令,它提供了从标准输入执行命令的能力。Grep和awk接受标准输入的参数,但cp或echo不接受标准输入的参数。它们只接受来自命令行的参数。xargs提供了从命令行提供参数的能力。

null

向Xargs提供参数

我们将为echo命令提供一些命令参数。echo命令将自动从xargs获取参数。

$ echo pof tut com | xargs echo

限制参数计数

在上一个示例中,我们将所有提供的单词打印在一行中。但在某些情况下,这是不合适的。我们可以使用 -n 参数。在本例中,我们将向 echo 命令。所以每个字都会一行一行地印出来。

$ echo pof tut com | xargs -n 1 echo
Limit Argument Count
限制参数计数

这里,对于每一轮xargs,只逐个提供一个命令行参数

具体提供论据

到目前为止,我们已经在命令末尾自动提供了参数。我们可以为参数提供{},它是参数的占位符。

$ ls -1 | xargs file {}
Provide Argument Specifically
具体提供论据

从文件读取输入

到目前为止,我们已经从标准输入读取输入,但是xargs可以从文件读取输入。文件内容将逐行读取并提供给命令。

$ xargs -a myinput echo

提供分隔符

分隔符用于将提供的文本解析为多个部分。通常我们用空格作为分隔符。在某些情况下,可以提供特定字符作为分隔符。在这个例子中,我们使用 ; 作为xargs的分隔符。这将创建三个独立的部分来处理 pof , tut com .

$ echo "pof;tut;com" | xargs -d ";" echo

每行执行前提示用户

xargs使我们能够逐个执行提供的参数和命令。有时我们可能需要在执行前检查每一行。想想我们用的 rm 命令有很多执行行,我们不想因为它的灾难性结果而犯错误。在这种情况下,我们可以 -p 提示我们的参数。我们有6个文件以 txt 我们想删除其中一些。

$ ls txt* | xargs -p -n 1  rm
Prompt User Before Execution Of Each Line
每行执行前提示用户

执行前打印命令

xargs的另一个有用的调试选项是在执行前打印命令。这将给出与其他命令一起使用xargs时的确切情况。我们也可以将此选项称为详细模式。 --verbose -t 选项可用于此功能。

$ ls -1 | xargs -t file {}
Print Command Before Execution
执行前打印命令

使用Xargs命令查找命令

在这里,我们将使用xargs和find命令创建一个示例。找到所有以结尾的文件。 PNG 然后将结果发送给 xarg 为了删除 rm .

$ find . -name *.PNG -type f -print | xargs rm {}

带有Grep命令的Xargs命令

在本例中,我们将使用xargs和 grep 命令。我们会搜索的 .c 用于表达式的grep文件 "pass"

$ find . -name *.c -type f -print | xargs grep "pass" {}
Xargs Grep
沙尔格斯格雷普

Xargs命令和Cp命令

我们可以用 cp 使用xargs命令。在本例中,我们将找到所有c文件并将它们直接复制到/tmp/文件夹中。

$ find project -name "*.c" | xargs cp -t /tmp/

Xargs命令的退出状态

xargs根据命令执行结果提供退出状态代码。退出状态表示为整数。退出状态代码的含义如下所示。

0 if it succeeds123 if any invocation of the command exited with status 1-125124 if the command exited with status 255125 if the command is killed by a signal126 if the command cannot be run127 if the command is not found1 if some other error occurred

相关文章: 如何使用Chmod递归地更改文件和目录权限

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享