![查找以数字范围开头的所有文件夹](https://linux22.com/image/85312/%E6%9F%A5%E6%89%BE%E4%BB%A5%E6%95%B0%E5%AD%97%E8%8C%83%E5%9B%B4%E5%BC%80%E5%A4%B4%E7%9A%84%E6%89%80%E6%9C%89%E6%96%87%E4%BB%B6%E5%A4%B9.png)
如何查找以 500 到 899 范围内的值开头的所有文件夹?我只需要把它们列在一个文件中。
附加信息:
- 最大深度2
- 文件夹名称示例:
593091_azerty_qwerty
或849934_blablablabla_bla_blabla
答案1
试试这个(如果您 find
支持该-maxdepth
选项):
find parent_dir -maxdepth 2 -type d \(
-name '[5-8][0-9][0-9][!0-9]*' -o -name '[5-8][0-9][0-9]' \) > my_file1.txt
答案2
对于zsh
,假设数字始终是十进制整数(在处理器本机支持的范围内):
setopt extended_glob
dirs=(<500-899>([^0-9]*|)(/N) */<500-899>([^0-9]*|)(/DN))
但请注意,对于第二种模式,如果当前目录中存在指向目录的符号链接,则将在其目标中zsh
查找目录。<500-899>...
通过大括号扩展因式分解缩短:
dirs=({,*/}<500-899>([^0-9]*|)(/DN))
如果数字后面始终带有_
,则可以将其简化为:
dirs=({,*/}<500-899>_*(ND))
请注意,对于 5.2 之前的版本zsh
,由于处理器表示整数的方式,它将匹配 500 到 899 模 2 64之间的数字,因此例如将匹配590295810358705652224_something
2 69 + 512。