[英]How to get the specific files in pattern-matching directory Ruby
我想编写一个Ruby脚本,该脚本将查找目录是否来自同一模式,然后将其中的文件夹和文件复制到另一个目录。
例如,如果我想查找以下目录模式:
“./file/drive_Temp/**/tools/”
有可能:
只要前面部分以“ ./file/drive_Temp/”开头并以“ / tools /”结尾。
我要做的是将符合目录模式的所有文件复制到新目录中:
以下目录中可能有一些文件,例如:
这些txt文件将移至名为Tools的目录
这是我的代码:
if File.directory?('./file/drive_Temp/**/tools')
FileUtils.mv './file/drive_Temp/**/tools/*.*','./Tools'
end
双星号不起作用吗? 因为无法将文件夹移动到指定的目录。 还是应该改用glob
?
您可以使用Dir
来获取这些目录中的所有文件,并反复移动每个文件,如下所示:
Dir["./file/drive_Temp/**/tools/*"].each do |file|
FileUtils.mv(file, './Tools')
end
注意,这将替换 ./Tools
中已经存在的所有文件; 如果需要避免这种行为,则可以在移动之前检查.Tools
中.Tools
已存在要移动的文件,例如:
target_dir = "./Tools"
Dir["./file/drive_Temp/**/tools/*"].each do |file|
if File.exist?("#{target_dir}/#{File.basename(file)}")
# Handle file with duplicate name.
else
FileUtils.mv(file, target_dir)
end
end
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.