12个Xargs命令必须掌握的用法
Xargs是一个很棒的命令,它从标准输入中读取数据流,然后生成并执行命令行。这意味着它可以获取命令的输出并将其作为另一个命令的参数传递。如果未指定命令,则默认情况下,xargs将执行echo,很多种场景下都可以用到。
xargs在命令行的日常使用中有几种有用的方式。
1.第一个示例显示如何查找所有.png
图像并使用tar工具将其存档,如下所示。
在这里,使用action命令-print0
可以在标准输出上打印完整的文件路径,后跟一个空字符和-0
xargs标志可有效处理文件名中的空格。
$ find Pictures / tecmint / -name“ \* .png” -type f -print0 | xargs -0 tar -cvzf images.tar.gz
使用Tar查找图像并存档
2.您还可以使用xargs将ls命令的多行输出转换为单行,如下所示。
$ ls -1 Pictures/tecmint/
$ ls -1 Pictures/tecmint/ | xargs
单行列出文件
3.要生成系统上所有Linux用户帐户的简要列表,请使用以下命令。
$ cut -d: -f1 < /etc/passwd | sort | xargs
查找Linux用户列表
4.假设您有一个文件列表,并且希望知道列表中每个文件的行数/字数/字符数,则可以如下使用ls命令和xargs。
$ find Downloads -name "DomTerm" -type d -print0 | xargs -0 /bin/rm -v -rf "{}"
计算文件中的行数,单词数和字符数
5. Xarags还允许您查找并递归删除目录,例如,以下命令将递归删除目录Downloads中的DomTerm。
$ find Downloads -name "DomTerm" -type d -print0 | xargs -0 /bin/rm -v -rf "{}"
查找并递归删除目录
6.与上一个命令类似,您还可以在当前目录中找到所有名为net_stats的文件并将其删除。
$ find . -name "net_stats" -type f -print0 | xargs -0 /bin/rm -v -rf "{}"
7.接下来,使用xargs一次将文件复制到多个目录。在此示例中,我们尝试复制文件。
$ echo ./Templates/ ./Documents/ | xargs -n 1 cp -v ./Downloads/SIC_Template.xlsx
将文件复制到多个目录
8.您还可以同时使用find命令,xargs和重命名命令将特定目录中的所有文件或子目录重命名为小写,如下所示。
$ find Documnets -depth | xargs -n 1 rename -v 's/(.*)\/([^\/]*)/$1\/\L$2/' {} \;
9.这是xargs的另一个有用的用法示例,它显示了如何删除目录中除一个或几个具有给定扩展名的文件之外的所有文件。
$ find . -type f -not -name '*gz' -print0 | xargs -0 -I {} rm -v {}
10.如前所述,您可以使用所示标志指示xargs从文件而不是标准输入中读取项目-a
。
$ xargs -a rss_links.txt
11.您可以使用该-t
标志启用详细信息,该标志告诉xargs在执行之前在标准错误输出上打印命令行。
$ find Downloads -name "DomTerm" -type d -print0 | xargs -0 -t /bin/rm -rf "{}"
12.默认情况下,xargs使用空格终止/定界项目,您可以使用该-d
标志设置定界符,定界符可以是单个字符,C样式字符转义符(例如\n
)或八进制或十六进制转义代码。
此外,还可以提示用户关于是否运行每个命令行并读取来自终端的线路,使用所述-p
标记如图所示(简单地键入y
为是或n
为无)。
$ echo ./Templates/ ./Documents/ | xargs -p -n 1 cp -v ./Downloads/SIC_Template.xlsx
在运行命令之前提示用户
有关更多信息,请阅读xargs手册页。
$ man xargs
现在就这样!Xargs是用于构建命令行的强大工具。它可以帮助您将一个命令的输出作为另一个命令的参数传递进行处理。