查找以数字范围开头的所有文件夹

查找以数字范围开头的所有文件夹

如何查找以 500 到 899 范围内的值开头的所有文件夹?我只需要把它们列在一个文件中。

附加信息:

  • 最大深度2
  • 文件夹名称示例:593091_azerty_qwerty849934_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_something2 69 + 512。

相关内容