Bash脚本用于重命名带有动态名称的文件夹,并替换其中的字符串。

11 浏览
0 Comments

Bash脚本用于重命名带有动态名称的文件夹,并替换其中的字符串。

我刚开始使用Docker,并且对bash脚本是新手,但现在我需要编写一个bash脚本来完成以下任务:\n

    \n

  1. 我有两个带有一些子目录的文件夹:Rtp/Rtp-[version]/,如果Rtp-[version]/目录存在,我需要将其重命名为Rtp/并覆盖其内容。[version] - 是动态数字。
  2. \n

\n我的目录结构:\n

|-- Rtp
     |--- 子目录1
     |--- 子目录2
|-- Rtp-1.0 (或 Rtp-1.6, Rtp-2.7)
     |--- 子目录1
     |--- 子目录2

\n

    \n

  1. 完成后,我需要在新的Rtp/目录中查找特定文件app.properties,并将其内部的字符串:myvar=my value更改为字符串myvar=new value,然后对其进行3个文件的相同操作。
  2. \n

\n我尝试了这个链接:http://stackoverflow.com/questions/15290186/…:find . -name \'Rtp-\' -exec bash -c \'mv $0 ${0/*/Rtp}\' {} \\; 问题是,如果目录已经存在,它会将一个目录移动到另一个目录中。\n此外,我想要重命名而不是复制,因为它是一个大目录,复制可能需要一些时间。\n谢谢你的帮助,请解释一下解决方案,以便我将来可以根据需要进行更改。

0
0 Comments

问题的出现原因是需要编写一个Bash脚本来重命名文件夹,并在其中替换字符串。解决方法如下:

根据Hazeltine的回答和在shell脚本中使用通配符检查文件是否存在,我找到了以下解决方案:

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

以上bash脚本首先使用通配符`Rtp-*/`来检查是否存在匹配的文件夹。如果存在,则使用`mv -T`命令将文件夹重命名为`Rtp`。然后,使用`find`命令查找`appl.properties`文件,并使用`sed`命令替换其中的字符串`myvar=my value`为`myvar=new value`。

通过这个脚本,我们可以动态地重命名文件夹,并在其中替换特定字符串。这对于批量处理文件夹和文件中的字符串非常有用。

0
0 Comments

问题的原因是需要重命名一个具有动态名称的文件夹,并替换其中的字符串。解决方法是使用Bash脚本来完成这个任务。下面是一个整理后的文章:

在Bash脚本中重命名文件夹以及替换其中的字符串

有时候我们需要对文件夹进行重命名,并且还需要在其中的文件中替换特定的字符串。下面是一个使用Bash脚本来完成这个任务的方法。

1. 重命名文件夹

我们可以使用以下代码来重命名文件夹:

for dir in $(find Rtp-[version] -maxdepth 1 -type d); do
    cp -Rf $dir Rtp
done

这段代码会在Rtp-[version]目录下找到所有的文件夹,然后使用循环来逐个重命名。我们使用`cp`命令来复制文件夹,并且使用`-Rf`选项来递归复制并覆盖已存在的文件夹。

2. 替换字符串

我们可以使用以下代码来替换文件夹中的特定字符串:

for f in $(find Rtp -type f -name "app.properties"); do
    sed -ie 's/myvar=myval/myvar=newval/' $f
done

这段代码会在Rtp目录下找到所有名为app.properties的文件。我们使用`sed`命令来进行字符串替换。`-i`选项表示进行原地替换,`-e`选项用来指定替换规则。在替换规则中,我们使用正则表达式来搜索特定的字符串,并将其替换为新的字符串。

需要注意的是,如果要替换的字符串中包含很多斜杠(/),可以使用其他字符作为分隔符,例如`|`。替换规则的格式为`s|||`。

通过使用这些代码,我们可以方便地重命名文件夹并替换其中的字符串。

希望这篇文章对你有帮助!

0