Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 在指定的文件夹/子文件夹中按模式搜索文件_Ruby - Fatal编程技术网

Ruby 在指定的文件夹/子文件夹中按模式搜索文件

Ruby 在指定的文件夹/子文件夹中按模式搜索文件,ruby,Ruby,我正在尝试设置文件夹并定义子文件夹搜索的可用深度,以按指定模式查找文件夹和子文件夹中的所有文件 比如: b = 0 while b < searchdeep # here number of subfolders inside $finale = '*'+'/*'*b fileshow = Dir.glob($finale).select {|f| File.file? f} and (some magic with pattern) puts fileshow b +=

我正在尝试设置文件夹并定义子文件夹搜索的可用深度,以按指定模式查找文件夹和子文件夹中的所有文件

比如:

b = 0 
while b < searchdeep # here number of subfolders inside
  $finale = '*'+'/*'*b
  fileshow = Dir.glob($finale).select {|f| File.file?  f} and (some magic with pattern)
  puts fileshow
 b += 1
end
b=0
而b
假设要查找所有.zip文件(以数组形式返回)

如果要在任何给定文件夹中搜索(使用递归)

编辑

我有以下4层树,其中两个文件分布在随机文件夹中(stackov文件和stackov文件)

我可以使用以下代码查找达到某一级别的所有文件(使用所需数字更改
x.times


假设要查找所有.zip文件(以数组形式返回)

如果要在任何给定文件夹中搜索(使用递归)

编辑

我有以下4层树,其中两个文件分布在随机文件夹中(stackov文件和stackov文件)

我可以使用以下代码查找达到某一级别的所有文件(使用所需数字更改
x.times


主要问题是如何连接这两个部分。例如,我尝试搜索名称中包含零件stackov的文件-这是第一个条件。同时需要获取所有stackov文件,这些文件位于主目录中的3个子文件夹(例如)之外-第二个条件。主要问题是如何连接这两个部分。例如,我尝试搜索名称中包含零件stackov的文件-这是第一个条件。同时需要获取所有stackov文件,这些文件不位于主目录中的3个子文件夹(例如)的深处-第二个条件。
require 'find'

arr = []
Find.find('/home') do |p|
  arr << p if p =~ /.zip$/
end

arr
b = 2
path = "/home#{'/*' * b}/*.zip"
Dir.glob(path)
[root@ip-10-0-0-118 main_folder]# tree
.
├── level_1_a
│   ├── file-stackov
│   ├── level_2_a
│   │   └── level_3_a
│   │       ├── file-stackov
│   │       ├── level_4_a
│   │       │   ├── file-stackov
│   │       │   └── stackov-file
│   │       └── stackov-file
│   └── stackov-file
└── level_1_b
    ├── level_2_b
    │   └── level_3_b
    │       └── level_4_b
    │           └── stackov-file
    └── stackov-file

8 directories, 8 files
1.times.flat_map {|level| Dir.glob("./*#{'/*' *level}/*stackov*")}
# ["./level_1_b/stackov-file", "./level_1_a/file-stackov", "./level_1_a/stackov-file"]

2.times.flat_map {|level| Dir.glob("./*#{'/*' *level}/*stackov*")}
# ["./level_1_b/stackov-file", "./level_1_a/file-stackov", "./level_1_a/stackov-file"]

3.times.flat_map {|level| Dir.glob("./*#{'/*' *level}/*stackov*")}
# [
#  "./level_1_b/stackov-file", "./level_1_a/file-stackov", "./level_1_a/stackov-file", 
#  "./level_1_a/level_2_a/level_3_a/file-stackov", "./level_1_a/level_2_a/level_3_a/stackov-file"
# ]

4.times.flat_map {|level| Dir.glob("./*#{'/*' *level}/*stackov*")}
# [
#   "./level_1_b/stackov-file", "./level_1_a/file-stackov", "./level_1_a/stackov-file", 
#   "./level_1_a/level_2_a/level_3_a/file-stackov", "./level_1_a/level_2_a/level_3_a/stackov-file", 
#   "./level_1_b/level_2_b/level_3_b/level_4_b/stackov-file", "./level_1_a/level_2_a/level_3_a/level_4_a/file-stackov", 
#   "./level_1_a/level_2_a/level_3_a/level_4_a/stackov-file"
# ]