首页 > 解决方案 > 如何使用 sed 反复更改目录名称?

问题描述

我必须更改一堆目录的名称。规则是更改每个包含 hostnameABC 的目录为 hostnameXYZ。

因此,如果它的名称为 hostnameABC_servers 或 Profiles_hostnameABC,它应该受到影响并更改为名称 hostnameXYZ_servers 和 Profiles_hostnameABC。对于 /apps/XPTO/ 中符合此标准的每个目录,必须递归地执行此操作。

我试图使用这个预制代码。但不起作用,因为我对 shell 了解不多,所以无法修复它。

find /apps/XPTO/ -type d \
    | egrep -v "temp|bkp" \
    | egrep ".*hostnameABC[_a-Z0-9]*$" \
    | while read line; do
        mv "$line" `echo $line | sed "s/hostnameABC/hostnameXYZ/g"`
    done

它只是没有改变,你能帮我找出问题所在吗?

标签: linuxshellsed

解决方案


推荐阅读