Ruby 如何将路径与前五个字符匹配

Ruby 如何将路径与前五个字符匹配,ruby,chef-infra,Ruby,Chef Infra,我必须到达位置/var/log/acpchef/commv123,在那里123可以更改为456 我累了Dir.glob。我需要/var/log/acpchef/commv***。我将在mixlibshellout中执行 begin cwd_kernel = Dir.glob('/var/cache/acpchef/commv***') cmd = Mixlib::ShellOut.new("commandrun", :cwd => cwd_kernel) cmd.run_com

我必须到达位置
/var/log/acpchef/commv123
,在那里
123
可以更改为
456

我累了
Dir.glob
。我需要
/var/log/acpchef/commv***
。我将在
mixlibshellout
中执行

begin
  cwd_kernel = Dir.glob('/var/cache/acpchef/commv***')
  cmd = Mixlib::ShellOut.new("commandrun", :cwd => cwd_kernel)
  cmd.run_command
  log 'run'
end 

这将使FileName与前五个字符及其后的任何字符相匹配:

Dir.glob('/var/cache/acpchef/commv*') 
# will match /var/cache/acpchef/commv12345abcdxyz123456
这将使用任意三个额外字符匹配文件名:

Dir.glob('/var/cache/acpchef/commv???') 
# will match /var/cache/acpchef/{commv123, commv456, commvabc, ...}
这将用三个数字匹配文件名:

Dir.glob('/var/cache/acpchef/commv[0-9][0-9][0-9]')
# will match /var/cache/acpchef/commv{123, 234, 456, 999, ...}
此外,您的示例没有正确使用块语法,并且没有使用
rescue
,而是使用了
begin..end
,这基本上不起任何作用。它应成为:

Dir.glob('/var/cache/acpchef/commv???').each do |cwd_kernel|
  cmd = Mixlib::ShellOut.new("commandrun", :cwd => cwd_kernel)
  cmd.run_command
  log 'run'
end
Dir.glob
返回一个,它是结果的集合<代码>数组。每个都返回一个,它基本上是一个对象,使用新值运行以下代码块的次数与可用新值的次数相同,这意味着您可以使用它为
Dir.glob
的所有结果运行相同的代码块。该值通过
|block|u参数
语法传递给块

ruby中的关键字用于捕获错误:

begin
  # do something that generates an exception
rescue => exception
  # handle the exception
end
A
开始
而不进行
救援
确保
否则
不执行任何操作


此外,这与。

非常相似,这将使FileName与前五个字符及其后的任何字符相匹配:

Dir.glob('/var/cache/acpchef/commv*') 
# will match /var/cache/acpchef/commv12345abcdxyz123456
这将使用任意三个额外字符匹配文件名:

Dir.glob('/var/cache/acpchef/commv???') 
# will match /var/cache/acpchef/{commv123, commv456, commvabc, ...}
这将用三个数字匹配文件名:

Dir.glob('/var/cache/acpchef/commv[0-9][0-9][0-9]')
# will match /var/cache/acpchef/commv{123, 234, 456, 999, ...}
此外,您的示例没有正确使用块语法,并且没有使用
rescue
,而是使用了
begin..end
,这基本上不起任何作用。它应成为:

Dir.glob('/var/cache/acpchef/commv???').each do |cwd_kernel|
  cmd = Mixlib::ShellOut.new("commandrun", :cwd => cwd_kernel)
  cmd.run_command
  log 'run'
end
Dir.glob
返回一个,它是结果的集合<代码>数组。每个都返回一个,它基本上是一个对象,使用新值运行以下代码块的次数与可用新值的次数相同,这意味着您可以使用它为
Dir.glob
的所有结果运行相同的代码块。该值通过
|block|u参数
语法传递给块

ruby中的关键字用于捕获错误:

begin
  # do something that generates an exception
rescue => exception
  # handle the exception
end
A
开始
而不进行
救援
确保
否则
不执行任何操作


此外,这与.var/cache/acpchef/commv*.

Dir['/var/cache/acpchef/commv*.]
(只有一个通配符)非常相似。您能举个例子吗。我对ruby和chefWelcome还不熟悉,来看看Stackexchange Janani!你能编辑你的问题使其更具可读性吗?
Dir['/var/cache/acpchef/commv*']
(只有一个通配符)应该可以。你能举个例子吗。我是ruby和chefWelcome的新手,来看看Stackexchange Janani!你能修改一下你的问题,让它更具可读性吗?