fbpx
维基百科

xargs

xargs是一条Unix类Unix操作系统的常用命令。它的作用是将参数列表转换成小块分段传递给其他命令,以避免参数列表过长的问题[1]。xargs的作用一般等同于大多数Unix shell中的反引号,但更加灵活易用,并可以正确处理输入中有空格等特殊字符的情况。对于经常产生大量输出的命令如findlocategrep来说非常有用。

示例 编辑

例如,下面的命令:

rm $(find /path -type f) 

如果path目录下文件过多就会因为“参数列表过长”而报错无法执行。但改用xargs以后,问题即获解决。

find /path -type f -print0 | xargs -0 rm 

本例中xargs将find产生的长串文件列表拆散成多个子串,然后对每个子串调用rm。-print0表示輸出以null分隔(-print使用換行);-0表示輸入以null分隔。这样要比如下使用find命令效率高的多。

find /path -type f -exec rm '{}' \; 

上面这条命令会对每个文件调用"rm"命令。当然使用新版的"find"也可以得到和"xargs"命令同样的效果:

find /path -type f -exec rm '{}' + 
find . -name "*.foo" | xargs grep bar 

该命令大体等价于

grep bar $(find . -name "*.foo") 
find . -name "*.foo" -print0 | xargs -0 grep bar 

使用了GNU特殊规定的空字符。

find . -name "*.foo" -print0 | xargs -0 -t -r vi 

与上面的基本相同但启动vi进行编辑。-t参数会提前打印错误信息。-r参数是一个GNU扩展,表明在无输入情况下则不构造命令执行。

find . -name "*.foo" -print0 | xargs -0 -i mv {} /tmp/trash 

使用-i参数将{}中内容替换为列表中的内容。

参见 编辑

参考 编辑

  1. ^ GNU Core Utilities FAQ. [2008-03-12]. (原始内容于2020-11-11). 

外部链接 编辑

手册页 编辑

  • xargs(1) – GNU Findutils参考
  • xargs(1): construct argument list(s) and execute utility – FreeBSD通用命令(General Commands)手册页
  • xargs(1): construct argument list(s) and execute utility – NetBSD通用命令(General Commands)手册页
  • xargs(1): construct argument list(s) and execute utility – OpenBSD通用命令(General Commands)手册页
  • xargs(1): construct argument lists and invoke utility – Solaris 10用户命令(User Commands)参考手册页

xargs, 是一条unix和类unix操作系统的常用命令, 它的作用是将参数列表转换成小块分段传递给其他命令, 以避免参数列表过长的问题, 的作用一般等同于大多数unix, shell中的反引号, 但更加灵活易用, 并可以正确处理输入中有空格等特殊字符的情况, 对于经常产生大量输出的命令如find, locate和grep来说非常有用, 目录, 示例, 参见, 参考, 外部链接, 手册页示例, 编辑例如, 下面的命令, find, path, type, 如果path目录下文件过多就会因为, 参数列表过长, 而报. xargs是一条Unix和类Unix操作系统的常用命令 它的作用是将参数列表转换成小块分段传递给其他命令 以避免参数列表过长的问题 1 xargs的作用一般等同于大多数Unix shell中的反引号 但更加灵活易用 并可以正确处理输入中有空格等特殊字符的情况 对于经常产生大量输出的命令如find locate和grep来说非常有用 目录 1 示例 2 参见 3 参考 4 外部链接 4 1 手册页示例 编辑例如 下面的命令 rm find path type f 如果path目录下文件过多就会因为 参数列表过长 而报错无法执行 但改用xargs以后 问题即获解决 find path type f print0 xargs 0 rm 本例中xargs将find产生的长串文件列表拆散成多个子串 然后对每个子串调用rm print0表示輸出以null分隔 print使用換行 0表示輸入以null分隔 这样要比如下使用find命令效率高的多 find path type f exec rm 上面这条命令会对每个文件调用 rm 命令 当然使用新版的 find 也可以得到和 xargs 命令同样的效果 find path type f exec rm find name foo xargs grep bar 该命令大体等价于 grep bar find name foo find name foo print0 xargs 0 grep bar 使用了GNU特殊规定的空字符 find name foo print0 xargs 0 t r vi 与上面的基本相同但启动vi进行编辑 t参数会提前打印错误信息 r参数是一个GNU扩展 表明在无输入情况下则不构造命令执行 find name foo print0 xargs 0 i mv tmp trash 使用 i参数将 中内容替换为列表中的内容 参见 编辑GNU parallel pexec参考 编辑 GNU Core Utilities FAQ 2008 03 12 原始内容存档于2020 11 11 外部链接 编辑xargs construct argument lists and invoke utility 命令与工具 Commands amp Utilities 参考 单一UNIX 规范第7期 由國際開放標準組織发布手册页 编辑 xargs 1 GNU Findutils参考 xargs 1 construct argument list s and execute utility FreeBSD通用命令 General Commands 手册页 xargs 1 construct argument list s and execute utility NetBSD通用命令 General Commands 手册页 xargs 1 construct argument list s and execute utility OpenBSD通用命令 General Commands 手册页 xargs 1 construct argument lists and invoke utility Solaris 10用户命令 User Commands 参考手册页 取自 https zh wikipedia org w index php title Xargs amp oldid 64208703, 维基百科,wiki,书籍,书籍,图书馆,

文章

,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。