Linux Bash脚本以使用动态名称重命名文件夹并替换它';里面有细绳
我刚刚开始使用Docker,而且我是bash脚本的新手,但现在我需要编写bash脚本来完成下一件事:Linux Bash脚本以使用动态名称重命名文件夹并替换它';里面有细绳,linux,bash,docker,cmd,Linux,Bash,Docker,Cmd,我刚刚开始使用Docker,而且我是bash脚本的新手,但现在我需要编写bash脚本来完成下一件事: 我有两个目录和一些子目录:Rtp/和Rtp-[version]/,如果Rtp-[version]/目录存在,我需要将其重命名为Rtp/,并覆盖其内容。[版本]-是动态编号 我的目录结构: |-- Rtp |--- subdir 1 |--- subdir 2 |-- Rtp-1.0 (or Rtp-1.6, Rtp-2.7) |--- subdir 1 |
Rtp/
和Rtp-[version]/
,如果Rtp-[version]/
目录存在,我需要将其重命名为Rtp/
,并覆盖其内容。[版本]-是动态编号|-- Rtp
|--- subdir 1
|--- subdir 2
|-- Rtp-1.0 (or Rtp-1.6, Rtp-2.7)
|--- subdir 1
|--- subdir 2
Rtp/
dir中找到特定的文件app.properties
,并在其中更改字符串:myvar=my value
为stringmyvar=new value
,并对另外3个文件执行相同的操作find-名称'Rtp-'-execbash-c'mv$0${0/*/Rtp}'{}\代码>如果目录已经存在,它会将一个目录移动到另一个目录
此外,我想重命名它,而不是复制,因为它的大目录,它可能需要一些时间来复制
提前谢谢,请您解释一下解决方案,以便将来如果有什么东西需要更改,我可以更改。1
对于$中的dir(查找Rtp-[version]-maxdepth 1-类型d):do
cp-Rf$dir Rtp
完成
- 在Rtp版本中查找所有目录
- 迭代所有结果(
for…
)
- 递归复制到Rtp/,并且
-f
将覆盖
二,
对于美元中的f(查找Rtp-键入f-名称“app.properties”):do
sed-ie s/myvar=myval/myvar=newval/$f
完成
- 查找名为app.properties的所有文件
- 使用sed(流编辑器)以交互方式
-i
-e
搜索字符串(通过正则表达式)并替换它(例如s//
)。请注意,需要转义oldval和newval。如果它们包含大量的/
,您可以执行类似s | |
的操作
基于@Brian Hazeltine的回答和 我找到了下一个解决方案:
if ls Rtp-*/ 1> /dev/null 2>&1; then
mv -T Rtp-*/ Rtp
find appl.properties -type f -exec sed -ie 's/myvar=my value/myvar=new value/' {} \;
fi
这个网站的目的是帮助你们解决问题,而不是为你们做你们的工作。你已经试过什么了?它是怎么失败的?尝试日志失败?我尝试了此链接::查找-名称'Rtp-'-execbash-c'mv$0${0/*/Rtp}'{}\;问题是,如果目录已经存在,它会在另一个目录中移动一个目录。请将您尝试过的内容移动到Q的正文中,并删除注释。Qs应该是独立的,不需要转到其他链接。我们需要查看目录结构的现有设置以及所需的结构。口头描述几乎总是模棱两可的(就像你的一样),所以我们需要看到一个可以解决的真实用例。在这里发布更多Qs之前,请阅读、、和。祝你好运。看一个“真实”用例的例子,以及如何在你的问题正文中说明它。祝你好运。他想要mv-T,但找不到。谢谢,我会检查它的