【发布时间】:2017-06-12 02:35:36
【问题描述】:
我想编写一个 Ruby 脚本,它会查找是否来自相同模式的目录,然后将其中的文件夹和文件复制到另一个目录。
例如,如果我想找到一个目录模式是:
"./file/drive_Temp/**/tools/"
可以是:
- ./file/drive_Temp/abc/tools/
- ./file/drive_Temp/def/tools/
- ./file/drive_Temp/xyz/tools/
只要前面部分以“./file/drive_Temp/”开头,以“/tools/”结尾。
我要做的是将所有符合上述目录模式的文件复制到一个新目录:
以下目录中可能有一些文件,例如:
- ./file/drive_Temp/abc/tools/aaa.txt
- ./file/drive_Temp/abc/tools/bbb.txt
- ./file/drive_Temp/abc/tools/ccc.txt
- ./file/drive_Temp/def/tools/zzz.txt
- ./file/drive_Temp/def/tools/yyy.txt
- ./file/drive_Temp/def/tools/qqq.txt
- ./file/drive_Temp/xyz/tools/ttt.txt
- ./file/drive_Temp/xyz/tools/jjj.txt
那些 txt 文件将被移动到名为 Tools 的目录
这是我的代码:
if File.directory?('./file/drive_Temp/**/tools')
FileUtils.mv './file/drive_Temp/**/tools/*.*','./Tools'
end
双星号不起作用吗?因为文件夹无法移动到指定的目录。还是应该改用glob?
【问题讨论】:
-
我觉得你的逻辑有点不对劲。即使 mv 命令可以工作,在 ./file/drive_Temp/abc/ 下的“工具”目录的第一个副本之后,该命令也会将 ./file/drive_Temp/def/ 作为“工具”目录抛出错误已经存在了。请告知您要实现的目标是什么?
-
我已对我的问题进行了更改。我想检查文件夹是否存在,然后将目录中的文件移动到提供的新目录
-
无需检查现有文件夹,您可以使用
Dir并直接抓取与该模式匹配的文件夹中的文件。检查发布的答案。
标签: ruby directory glob fileutils