bash - 是否有像 `seq` 这样的命令,它对标准输出执行完整的类似 bash 的大括号扩展?
问题描述
在 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/大括号)。如果没有任何结果,我可能会为其中一个 Python 接口提供 CLI 接口。
解决方案
“需要适应 argv”限制仅适用于外部命令,不适用于 shell 内置命令。
因此,内置的 shellprintf
适合以下用途:
printf '%s\n' {a..z}/{a..z}/{a..z} | xargs -d $'\n' mkdir -p --
...或者,更好的是,使用printf '%s\0'
并xargs -0
传递所有可能的参数(和所有可能的文件名),一个包含带有文字换行符的内容的集合。
推荐阅读
- php - PHP - 如果键匹配,则多维数组总和值
- linux - 在 RHEL 7 上构建静态可执行文件?
- geoserver - CSS 样式中的 Geoserver ECQL LIKE 运算符导致不正确的图例
- c# - 我想调用单击时被破坏的气球对象并在计时器事件函数中检查它
- android - 由于毕加索的 profileFragment 出现问题,我的 Kotlin 应用程序崩溃
- html - 关于媒体查询的问题
- html - HTTP 请求的触发
- css - 为什么当我向其中添加类时我的 css 转换不起作用
- graphql - 使用 3 种不同组合查询 Appsync graphql
- python - 如何使用 pandas 将文件名映射到从多个 excel 文件中提取的列