1. 介绍

xargs 命令主要将管道输出的结果传递给另一个命令作为参数使用。通常用于处理大量文件、通过管道传递数据以及批量执行操作。

2. 常用选项

-d < delimiter >:指定数据的分隔符。

-n < number >:每次传递给命令的参数个数。

-L < number >:每次传递给命令的行数。

-t:打印命令,然后再执行。

-p:询问用户确认,然后再执行。

-I < replace-str >:指定替换字符串,用于在命令中指定参数位置。

-0:用空字符(null)作为分隔符,通常与 find -print0 一起使用,避免因为空格、换行等特殊字符引起的问题。

3. 使用示例

  • 批量创建目录

可以使用 xargs 通过指定多个目录名,批量创建目录。

# 创建 dir1, dir2, dir3

echo "dir1 dir2 dir3" | xargs mkdir
  • 删除指定文件

假设有一系列文件需要删除,可以使用 xargs 将文件名作为参数传递给 rm 命令。

# 将多个文件名传递给 rm

echo "dir1 dir2 dir3" | xargs rm -fr
  • 使用 find 和 xargs(最常用

结合 find 和 xargs 可以高效处理文件。使用 -print0 和 -0 选项可以处理包含特殊字符的文件名。一般用于定时删除日志文件或临时缓存文件。

# 删除当前目录及子目录中所有 .tmp 文件

find . -name "*.tmp" -print0 | xargs -0 rm
  • 每次传递指定数量的参数

xargs 可以限制每次传递给命令的参数数量,这对避免参数过多导致命令失败非常有用。

# 每次传递 2 个文件名给 echo 命令

echo "f1 f2 f3 f4 f5 f6 f7 f8 f9" | xargs -n 2 echo
  • 执行命令并确认

可以使用 -p 选项,要求在每次执行前进行确认。

# 先批量创建3个文件echo "file1 file2 file3" | xargs touch

# 删除文件前确认echo "file1 file2 file3" | xargs -p rm
  • 使用替换字符串

可以指定替换字符串,用于在命令中指定参数位置。

# 先批量创建3个文件

echo "file1 file2 file3" | xargs touch

# 对 file1, file2, file3 运行 `echo "processing"` 命令

echo "file1 file2 file3" | xargs -I {} echo "processing {}"
Copyright © https://yan-jian.com 2023 all right reserved更新时间: 2024-05-16 15:12:31

results matching ""

    No results matching ""