如何根据子文件夹复制文件和重命名
Posted
技术标签:
【中文标题】如何根据子文件夹复制文件和重命名【英文标题】:How to copy file and rename depending on subfolder 【发布时间】:2017-08-04 11:18:29 【问题描述】:我正在尝试在 gradle 中复制一个文件并同时重命名它,其中文件的新名称应该取决于它所在的子文件夹的名称。
例如,我的文件结构如下所示:
├── apk
│ └── app-envTest-normalBuild-release.apk
├── logs
│ └── manifest-merger-envTest-normalBuild-release-report.txt
└── mapping
└── envTestNormalBuild
└── release
├── dump.txt
├── mapping.txt
├── seeds.txt
└── usage.txt
我想复制mapping.txt
并重命名它。新名称应为 mapping-envTestNormalBuild.txt
- 即应包括发布它的子目录的名称。
谁能告诉我是否/如何使用 gradle 复制+重命名功能?
我见过reverse is possible,即将foo-bar.txt
之类的文件复制到foo/bar.txt
等目录/路径。
【问题讨论】:
【参考方案1】:你可以试试例如:
task clean
doLast
project.file('dest').deleteDir()
task cp(type: Copy)
dependsOn clean
from 'mapping/envTestNormalBuild/release'
into 'dest'
include 'mapping.txt'
eachFile fcp ->
fcp.name = "$fcp.file.parentFile.parentFile.name-$fcp.name"
可以在here找到一个演示。
【讨论】:
也许还有一个问题:这将创建包含子目录的文件......我可以通过任何方式跳过这些目录,即将重命名的文件放在我在@中指定的实际路径中987654324@? @fgysin,我猜可能是通过FileCopyDetails配置的。你只需要尝试一下;) 能够使用from ... .include("...").files
解决它。 files
部分确保我们不复制任何目录。以上是关于如何根据子文件夹复制文件和重命名的主要内容,如果未能解决你的问题,请参考以下文章