![创建一个包含所有可能的字符和数字组合的文件夹](https://linux22.com/image/144124/%E5%88%9B%E5%BB%BA%E4%B8%80%E4%B8%AA%E5%8C%85%E5%90%AB%E6%89%80%E6%9C%89%E5%8F%AF%E8%83%BD%E7%9A%84%E5%AD%97%E7%AC%A6%E5%92%8C%E6%95%B0%E5%AD%97%E7%BB%84%E5%90%88%E7%9A%84%E6%96%87%E4%BB%B6%E5%A4%B9.png)
我想创建一个类似“example.txt、example.Txt、example.TxT...所有可能的组合”的文件夹。
答案1
对于具有 csh 样式大括号扩展支持的 shell:
mkdir example.{t,T}{x,X}{t,T}
使用zsh
,您可以将其缩短为:
mkdir example.{tT}{xX}{tT}
如果您启用该braceccl
选项(我不会建议全局启用该选项,因为它与大括号的其他一些用法发生冲突)set -o braceccl
。
如果你想所有可能的字母和数字组合,假设您想要限制为 ascii 字母和数字(而不是 Unicode 中不同脚本的数千个其他字母和数字),使用bash
、zsh
或ksh93
:
mkdir example.{{a..z},{A..Z},{0..9}}{{a..z},{A..Z},{0..9}}{{a..z},{A..Z},{0..9}}
您zsh -o braceccl
可以将其缩短为:
mkdir example.{a-zA-Z0-9}{a-zA-Z0-9}{a-zA-Z0-9}
但由于这是 238328 ((26+26+10) 3 ) 目录,您可能会达到execve()
参数和环境大小的限制。您可以通过使用内置函数(通过执行 )或执行以下操作来解决mkdir
此zsh
问题zmodload zsh/files
:
printf '%s\n' example.{{a..z},{A..Z},{0..9}}{{a..z},{A..Z},{0..9}}{{a..z},{A..Z},{0..9}} |
xargs -0 mkdir