xargs 是 Linux 中一个非常强大的命令,用于将标准输入中的输出作为参数传递给其他命令。通常情况下,xargs 用于处理长列表或者将多行输入转换成一行。
以下是 xargs 的基本用法和一些常见的例子:
bash展开代码command | xargs [options] [command]
假设你有一个包含文件名的列表文件,想要删除这些文件:
bash展开代码cat filelist.txt | xargs rm
这条命令将 filelist.txt 中的每一行作为参数传递给 rm 命令来删除文件。
假设你想要删除某个目录下所有以 .tmp 结尾的文件:
bash展开代码find /path/to/dir -name "*.tmp" | xargs rm
这条命令使用 find 找到所有 .tmp 文件,然后通过 xargs 将这些文件名传递给 rm 命令来删除它们。
有时你需要一次性传递多个参数给命令,比如解压多个 .tar.gz 文件:
bash展开代码ls *.tar.gz | xargs -n 1 tar -xzvf
-n 1 指定每次传递一个文件给 tar 命令,逐个解压文件。
如果输入列表非常长,命令可能无法处理所有参数,可以使用 -n 选项将它们分成多个块:
bash展开代码find . -name "*.log" | xargs -n 10 rm
这将每次删除 10 个 .log 文件,直到删除完所有文件。
-I 参数使用:-I 选项允许你定义一个替代字符串,将其替换为当前的参数列表:
bash展开代码cat urls.txt | xargs -I {} wget {}
这条命令会从 urls.txt 文件中读取 URL,并逐个用 wget 下载。
当文件名或路径中包含空格时,使用 -d 选项指定分隔符,通常使用 -print0 和 -0 结合来处理:
bash展开代码find /path/to/dir -name "*.jpg" -print0 | xargs -0 rm
这将删除所有 .jpg 文件,确保处理路径中包含空格的情况。
xargs 是处理批量命令的一大利器,可以和许多其他命令结合使用来自动化操作。它的灵活性使其在脚本编写和日常管理任务中非常有用。



本文作者:Dong
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC。本作品采用《知识共享署名-非商业性使用 4.0 国际许可协议》进行许可。您可以在非商业用途下自由转载和修改,但必须注明出处并提供原作者链接。 许可协议。转载请注明出处!