是否有像 seq 这样的命令,它执行完整的 bash-like 大括号扩展到标准输出?

Is there command like `seq`, that performs full bash-like brace expansion to stdout?

在Bash中,使用大括号展开嵌套目录树通常很方便,例如

mkdir -p {foo,bar}/baz{0..9}

这一直有效,直到扩展对于单个 ARGV 阵列来说太大了。一个方便的替代方案是 command-x,它类似于 seq,但接受与 bash 相同的大括号扩展,例如

command-x "{a..z}/{a..z}/{a..z}" | xargs mkdir -p
command-x "{a..z}/{a..z}/{a..z}" | parallel -m mkdir -p

在我重新发明轮子之前 command-x 存在吗?

到目前为止我发现的最接近的是作为库的实现(例如 https://pypi.org/project/bracex/, https://pypi.org/project/braceexpand/, https://github.com/micromatch/braces)。如果没有任何结果,我可能会为 Python 之一提供一个 CLI 界面。

“需要适合 argv”限制仅适用于外部命令,不适用于 shell 内置命令。

因此,shell 内建函数 printf 适用于以下目的:

printf '%s\n' {a..z}/{a..z}/{a..z} | xargs -d $'\n' mkdir -p --

...或者,更好的是,使用 printf '%s[=12=]'xargs -0 传递所有可能的参数(以及所有可能的文件名),一组包含文字换行符的内容。