gpt4 book ai didi

linux - xargs 在 Linux 上不工作

转载 作者:太空宇宙 更新时间:2023-11-04 09:15:40 24 4
gpt4 key购买 nike

我想同时运行多个具有不同参数的 python 脚本

在尝试这样做时,我遇到了这个 xargs 命令;我想了解它。

当尝试这个示例命令时 echo {a..d} | xargs -n 1 -I % mv % %-01 它可以在我的 MacBook 上运行并提供所需的输出。

但在我登录到运行 Ubuntu 16.04 的 VPS 并发出相同的命令后,我得到了这个 mv: cannot stat 'a b c d': No such file or directory 我查看了手册页并用谷歌搜索但找不到任何原因。

ps:我猜 xargs 是默认 Ubuntu 存储库的最新版本。

(这是我关于 SO 的第一个问题)。

最佳答案

您的 echo 命令生成一行以空格分隔的输出:

$ echo {a..d}
a b c d

虽然通常 xargs 需要空格分隔的输入,当使用 -I 时它需要换行分隔的输入。从手册页:

-I replace-str
Replace occurrences of replace-str in the initial-arguments with names
read from standard input. Also, unquoted blanks do not terminate in‐
put items; instead the separator is the newline character. Implies -x
and -L 1.

您现有的命令行会生成以下命令:

mv a b c d a b c d-01

您需要将 echo 命令的输出分成多行:

$ echo {a..d} | tr ' ' '\n' | xargs -n 1 -I % echo mv % %-01
mv a a-01
mv b b-01
mv c c-01
mv d d-01

正如您所指出的,您可以将上面的 tr ... 替换为 xargs -n1,这会得到相同的结果:因为没有 -I xargs 读取以空格分隔的参数,这导致在单独的行上回显每个参数。

关于linux - xargs 在 Linux 上不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48116141/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com