我有一个包含多个pdf文件的文件夹,文件名如下所示
1_abc.pdf
2_xyz.pdf
3_qwe.pdf
要做的只是获取文件名的第一部分
1
2
3
因此,我正在尝试生成一个rake任务以使该任务正常工作,但我不想弄清楚如何在多个文件上实现它。
namespace :request_document do
desc "Expects to get a file or folder ..."
task(:import_attachment, [:filename]) do |t, args|
files = Dir.foreach("/Users/admin/Documents/Data/Attachments")
puts files
*This gives the list of all the files under the attachment folder*
end
end
所以我正在考虑使用类似的东西
File.basename"1_abc.pdf".sub(/\_..*/, '')
=> 1
这给出了我需要的1,但是我无法弄清楚如何在多个文件上实现它。像这样循环遍历附件文件夹中的所有文件,并让我获得文件名的第一部分。请帮我弄清楚。
答案 0 :(得分:1)
您可以简单地遍历文件名,例如:
Dir["/Users/admin/Documents/Data/Attachments/*"].each do |filename|
puts File.basename(filename).sub(/\_.*/, '')
end
rake任务看起来像这样:
namespace :request_document do
desc "Expects to get a file or folder ..."
task(:import_attachment, [:path]) do |t, args|
if File.directory?(args[:path])
Dir["#{path}/*"].each do |file_path|
puts File.basename(file_path).sub(/\_.*/, '')
end
else
puts File.basename(args[:path]).sub(/\_.*/, '')
end
end
end