如何在Linux中使用xargs命令?

时间:2020-02-23 14:33:13  来源:igfitidea点击:

xargs命令允许我们传递一个命令的输出作为另一命令的输入,而不必将输出写入文件。

使用xargs可以极大地帮助某些可能需要使用多个命令来交叉引用其他命令的输出的任务。
让我们来了解一下该命令及其当前的一些用法。

什么是xargs?

Xargs允许您将输出作为输入传递给另一个命令。
尽管类似grep的命令允许用户使用输入作为参数,但是xargs通过允许输入采用参数形式来显示其重要性。

借助管道,几乎总是将此命令与其他命令结合使用。
让我们了解该命令的基本用法。

Linux中xargs命令的基础

理解任何命令的最佳方法是通过了解其语法。
这是Linux中xargs命令的语法。

xargs [option] [command]

在此,[命令]可以是我们希望在标准输入上执行的任何命令。
如果我们未指定命令,则xargs实用程序将使用默认命令。

xargs实用程序的默认命令是" echo"。

xargs实用程序允许使用几个选项来指示如何构建和执行命令。
这是Linux中xargs实用程序提供的一些常用选项的列表。

OptionEffect
-0This option is used to specify to the xargs utility that the items in the standard input string are terminated using a NULL character instead of a white space.
-a filenameRead from file
-rDon't run if the input is empty
-d delimSpecify a delimiter
-xExit if the input size specified by -s is exceeded.
-I replace-strThis is used to declare a string as replace-str. Then all occurrences of replace-str are swapped by the parameter or argument from the standard input.
–helpThis option is used to display the help message for the xargs utility. This includes all the possible options which can be used with the xargs utility.

该列表涵盖了xargs实用程序中使用的基本选项。
不要忘记浏览xargs的手册页。

使用xargs命令

现在,我们已经了解了Linux中的xargs命令及其参数。
现在是时候将这些知识用于xargs实用程序的应用程序了。
在本教程中,我们将通过一些示例来学习如何使用xargs实用程序。

xargs的默认行为

如前所述,如果在输入参数后未指定任何命令,则xargs命令将默认对输入参数运行echo命令。

让我们来看看实际情况,以验证我们的主张。

ls -ls | xargs

通过echo和xargs命令传递时,ls命令的输出被打印出来而没有换行和格式化。

使用带有名称列表的文件创建多个目录

如果一行中包含名称列表,则可以复制并粘贴用空格分隔的目录名称,然后mkdir命令将创建目录。

但是,如果我们有一个包含要创建的所有目录名称列表的文件,该怎么办?让我们看看如何从目录名称列表中创建多个目录。

cat <filename> | xargs mkdir

我们尝试将cat命令的输出直接管道传输到mkdir,但失败了。
但是通过添加xargs,我们能够执行命令并成功创建目录。

查找包含特定字符串的文件

Grep可以在文件或者输出消息中搜索字符串。
但是它无法搜索文件。
find命令可以搜索文件,但不能搜索其中的内容。
xargs命令可以帮助将这两者连接在一起。

find <search directory> -name "<name>" | xargs grep -E 'fatal|Warning'

我们在/var/log目录中搜索文件" syslog",并查找包含单词" fatal"或者" Warning"的行。
由于我们知道在这种情况下需要的文件,因此我们可以将其直接传递给grep。
但是,如果我们不知道文件路径,则可以使用find命令查找文件并将路径传递给grep。

删除具有特定扩展名的文件

与创建和标识文件和目录一样,xargs实用程序也有助于从系统中删除文件。
对于此示例,我们将删除当前目录中存在的所有文本文件。

find <path> -name <filename> | xargs rm -rf

删除文件Xargs

其中find命令首先搜索扩展名为.txt的文件。
然后将此输出发送到rm命令。

此命令从find命令获取文件并删除它们。
成功执行此命令的输出应给出并输出与以下给出的类似。

结论

Linux中的xargs命令是功能强大的工具,可通过命令行使用标准输入来构建和执行命令。
通过允许您使用一个命令的输出代替另一个命令中的参数,可以提高命令行的使用效率。

和有经验的Linux用户都经常使用此命令行实用程序。

我们希望本教程能够帮助您了解Linux中的xargs命令。
在本教程中,我们仅讨论了xargs实用程序的基本用法,因此请确保自己探索该命令。

如果您有任何反馈,疑问或者建议,请随时通过以下注释与我们联系。