无法在 xargs 中打印换行符

Unable to print newline inside xargs

我正在编写一些脚本来帮助组织一些东西。我已将我的代码从原来的代码简化为:

$ echo $(find -type d -maxdepth 5 | grep -E "\./([^/])*/([^/])*/([^/])*/([^/])*"
 | cut -d'/' -f 3 | sort | uniq -d | xargs -I R sh -c 'echo -e "alpha \n"')
(R actually doesn't do anything here but it's used in the original)

特别是,我认为我的 xargs 有问题

xargs -I R sh -c 'echo -e "alpha \n"'

我希望看到的是 alpha 被打印多次,每次都换行。但是,我的输出看起来像

alpha alpha alpha...

我一直在网上搜索,试图找到解决此问题的方法,但没有用。我刚开始尝试 bash,有人可以指出我做错了什么吗?

这是的特例。


只有运行一个命令,没有echo:

$ printf '%s\n' "first line" "second line"
first line
second line

运行 未加引号的命令替换中的命令,正如您当前编写的代码:

$ echo $(printf '%s\n' "first line" "second line")
first line second line

运行 引用命令替换中的命令:

$ echo "$(printf '%s\n' "first line" "second line")"
first line
second line

...所以:如果你没有外echo $(...)的理由,就把它去掉;如果您确实有理由,请添加引号。