Xargs是一个很好的命令,它从标准输入读取数据流,然后生成并执行命令行; 意思是它可以输出命令并将其作为另一个命令的参数传递。 如果未指定命令,则xargs默认执行echo。 你们许多人还指示它从文件而不是stdin读取数据。
有几种方法可以使xargs在日常使用命令行时有用。 在本文中,我们将为初学者解释12个实用的Linux xargs命令示例。
1.第一个示例显示如何查找所有.png
图像并使用tar utilit将其归档,如下所示。
这里,action命令-print0
允许在标准输出上打印完整文件路径,然后是空字符, -0
xargs标志有效地处理文件名中的空格。
$ find Pictures/youcl/ -name *.png -type f -print0 | xargs -0 tar -cvzf images.tar.gz
使用tar查找图像和存档
2.您还可以使用xargs将多行输出转换为单行,如下所示。
$ ls -1 Pictures/youcl/ $ ls -1 Pictures/youcl/ | xargs
单行列出文件
3.要生成系统上所有Linux用户帐户的紧凑列表,请使用以下命令。
$ cut -d: -f1 < /etc/passwd | sort | xargs
查找Linux用户列表
4.假设您有一个文件列表,并且您希望知道列表中每个文件中的行/字/字符数,可以使用和xargs实现此目的,如下所示。
$ ls *upload* | xargs wc
计算文件中的行数,单词和字符数
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和rename命令将特定目录中的所有文件或子目录重命名为小写,如下所示。
$ 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是一个用于构建命令行的强大工具; 它可以帮助您将一个命令的输出作为另一个命令的参数进行处理。 在本文中,我们已经为初学者解释了12个实用的xargs命令示例。 通过下面的反馈表与我们分享您的想法或问题。