rake 任务中的多个文件基名
Multiple file basename in rake task
我有一个包含多个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,这是我需要的,但我无法弄清楚如何在多个文件上实现它。就像它循环遍历附件文件夹中的所有文件并获取文件名的第一部分。请帮我想想办法。
您可以像这样简单地遍历文件名:
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
我有一个包含多个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,这是我需要的,但我无法弄清楚如何在多个文件上实现它。就像它循环遍历附件文件夹中的所有文件并获取文件名的第一部分。请帮我想想办法。
您可以像这样简单地遍历文件名:
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