是否有像 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
传递所有可能的参数(以及所有可能的文件名),一组包含文字换行符的内容。
在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
传递所有可能的参数(以及所有可能的文件名),一组包含文字换行符的内容。