📜  “xargs -0” (1)

📅  最后修改于: 2023-12-03 15:35:51.227000             🧑  作者: Mango

xargs -0

xargs 是一个命令行工具,它允许用户将来自stdin的数据作为参数传递给其他命令。它也可以帮助用户构建复杂的管道,以将一系列命令链接起来。

xargs -0 是一个特殊的选项,它告诉 xargs 将输入解释为以NULL( \0)字节分隔的数据,而不是以空格分隔的数据。

为什么要使用xargs -0

有些时候, 传递给 xargs 的数据可能包含空格或其他特殊字符,这些字符可能导致 xargs 分隔不正确,从而破坏命令的正确性。

使用xargs -0 可以避免这种情况,它将数据解释为以NULL分隔的项,从而确保传递正确的参数。

例如,假设有一个目录,其中包含多个文件,文件名中包含空格。我们尝试在这个目录中查找文件名包含 "test" 的文件:

find . -name "*test*" | xargs rm -f

上面这个命令可能会导致误删除, 因为 xargs 假设文件名用空格分隔开。因此,可以改成以下命令,使用 -0 选项:

find . -name "*test*" -print0 | xargs -0 rm -f

这个命令将 $'\0' 用作文件名分隔符, 从而保证传递正确的参数。

如何使用 xargs -0

使用 xargs -0 的方式与普通的 xargs 使用方式相同。

例如,假设有一个包含多条信息的文件data.txt, 每个信息以空格或换行符分隔,并且以 NULL 分隔。

$ cat data.txt
foo bar
baz qux
quux

要将每条信息传递给命令 mycommand,可以使用以下命令:

$ tr '\n' '\0' < data.txt | xargs -0 mycommand

上面的命令将换行符替换为 NULL, 并使用xargs -0将每个信息传递给 mycommand 命令。

总结

xargs -0 可以确保将数据解释为以NULL分隔的项,从而避免由特殊字符引起的问题,它与普通的 xargs 使用方式相同。如果您的数据包含空格或其他特殊字符,则应使用xargs -0,以确保传递正确的参数。

参考链接