gpt4 book ai didi

Linux:如何用指定字符替换部分文件名

转载 作者:太空宇宙 更新时间:2023-11-04 05:14:57 25 4
gpt4 key购买 nike

我想用指定的字符替换部分文件名。

例如:

$ ls
SubNetwork=RNCRAM955E,MeContext=RNCRAM955E_statsfile.xml

我想用 RNCMST954E 替换 RNCRAM955E

这是我的预期输出。

$ ls
SubNetwork=RNCMST954E,MeContext=RNCMST954E_statsfile.xml

下面是我的代码:

$ find ./ -name '*.xml' | xargs -i echo mv {} {} | sed 's/RNCRAM955E/RNCMST954E/3g' | sh

mv ./SubNetwork=RNCRAM955E,MeContext=RNCRAM955E_statsfile.xml ./SubNetwork=RNCMST954E,MeContext=RNCMST954E_statsfile.xml
mv ./SubNetwork=RNCRAM955E,MeContext=RNCRAM955E_statsfile.xml ./SubNetwork=RNCMST954E,MeContext=RNCMST954E_statsfile.xml
mv ./SubNetwork=RNCRAM955E,MeContext=RNCRAM955E_statsfile.xml ./SubNetwork=RNCMST954E,MeContext=RNCMST954E_statsfile.xml
mv ./SubNetwork=RNCRAM955E,MeContext=RNCRAM955E_statsfile.xml ./SubNetwork=RNCMST954E,MeContext=RNCMST954E_statsfile.xml

我不明白3g的代码到底是什么意思。

我认为: sed s/xx/xx/3g 是否表示替换从第三个到末尾的匹配模式,而 sed s/xx/xx/3 是否表示仅替换第三个匹配模式? 顺便说一句,|sh 的确切含义是什么,我认为它使 echo 之后的命令作为 shell 执行,对吗?

最佳答案

3 表示替换第 3 个匹配项,g 表示替换所有匹配项。当您一起使用它们时,意味着替换从第三个开始的所有匹配。

通过管道传输到 sh 意味着将 sed 的输出作为 shell 命令执行。

大多数 Linux 发行版都有一个 rename 命令,可以使此操作变得更容易:

find . -name '*.xml' -exec rename 's/RNCRAM955E/RNCMST954E/' {} +

关于Linux:如何用指定字符替换部分文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50458682/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com