【发布时间】:2017-05-19 00:28:47
【问题描述】:
我想复制选定的构建产品,保留它们的目录结构部分,但是:
Dir.chdir('build/sources/ios_src') {
FileUtils.cp_r(Dir.glob('build/Build/Products/*/*.app*'), '/tmp/bcsh')
}
结果
Errno::ENOENT: No such file or directory @ dir_s_mkdir - /tmp/bcsh/Booble.app
尽管 glob 返回了这个:
Dir.chdir('build/sources/ios_src') {
Dir.glob('build/Build/Products/*/*.app*')
}
=> ["build/Build/Products/Calabash-iphonesimulator/Booble.app",
"build/Build/Products/Calabash-iphonesimulator/Booble.app.dSYM"]
我想要/tmp/bsch/build/Build/Products/.../Booble.app 和.../Booble.app.dSYM 而不是/tmp/bcsh/Booble.app 和/tmp/bcsh/Booble.app.dSYM。
为了清楚起见,我能够创建一个目录,但该错误更有用地表明文件最终会出现在我不想要它们的地方,而不是更多的冗长。
【问题讨论】:
-
Dir.mkdir('/tmp/bcsh')提前会有所帮助。如果要使用完整路径复制文件,则应自己创建所有目录。例如。使用Dir.glob() { |filename| HERE! Dir.mkdir && FileUtils.cp } -
@mudasobwa 什么是“这里!”?这是一件事,还是只是您向我展示了创建目录的位置?我对 Ruby 的怪异魔法感到非常困惑,以至于我无法从速记中分辨出功能。你能把这个作为答案吗?谢谢
标签: ruby glob file-copying