【发布时间】:2015-05-26 16:47:24
【问题描述】:
在我的/opt/myapp 目录中,我有一个远程自动化进程,它将删除<anything>-<version>.zip 形式的文件,其中<anything> 可以是任何 字母数字文件名,而@987654324 @ 将是一个版本号。因此,该自动化流程将交付的示例如下:
fizz-0.1.0.zipbuzz-1.12.35.zipfoo-1.0.0.zipbar-3.0.9.RC.zip
等等。通过此问题范围之外的控制,我保证在任何给定时间,/opt/myapp 下只会存在这些 ZIP 文件中的一个。我需要编写一个 Bash shell 命令 来重命名这些文件并将它们移动到/opt/staging。对于重命名,ZIP 文件需要删除其版本。所以/opt/myapp/<anything>-<version>.zip 被重命名并移动到/opt/staging/<anything>.zip。使用上面的例子:
-
/opt/myapp/fizz-0.1.0.zip=>/opt/staging/fizz.zip -
/opt/myapp/buzz-1.12.35.zip=>/opt/staging/buzz.zip -
/opt/myapp/foo-1.0.0.zip=>/opt/staging/foo.zip -
/opt/myapp/bar-3.0.9.RC.zip=>/opt/staging/bar.zip
目录移动很明显也很容易,但是重命名让我抓狂了。我需要以某种方式保存<anything>,然后稍后在命令中重新访问它。 命令必须是通用的,并且不能带参数。
到目前为止,我最好的尝试(甚至还没有接近工作)是:
文件=*.zip;文件=?; mv 文件 /opt/staging
关于如何做到这一点的任何想法?
【问题讨论】:
-
感谢@chepner,但请取消标记为骗子!在该问题中,用户知道“doc”一词将始终出现在文件名中,在这里我不确定
<anything>是什么!!! 这不是同一个问题,需要不同的解决方案! 举报审核。 -
这有什么不同? (建议的重复项不再链接,因此很难判断其解决方案是否/为什么会起作用)。
标签: linux bash filesystems