分享

写代码我不如chatGPT

 健明 2023-07-05 发布于广东

不服不行啊,最近遇到了一个文件批量修改名字的Linux代码需求:

CRR315530 S1F
CRR315531 S1M
CRR315532 S2F
CRR315533 S2M
CRR315534 S5F
CRR315535 S5M
CRR315536 S12F
CRR315537 S12M
CRR315538 S15F
CRR315539 S15M

就是我服务器里面有上面的文本内容的第一列的这些文件,但是这些文件名字确实是有点难以理解;

CRR315530/outs/web_summary.html
CRR315531/outs/web_summary.html
CRR315532/outs/web_summary.html
CRR315533/outs/web_summary.html
CRR315534/outs/web_summary.html
CRR315535/outs/web_summary.html
CRR315536/outs/web_summary.html
CRR315537/outs/web_summary.html
CRR315538/outs/web_summary.html
CRR315539/outs/web_summary.html

所以需要根据前面的文本文件的第一列和第二列对应关系进行改名。然后我就随手问了chatGPT如何写代码,我很随意的提问:我需要在Linux里面批量修改文件名字,我有一个txt文件里面有两列,第一列存储的文件名字需要使用shell命令修改为第二列的?

chatGPT给我的回答超级好:


在Linux中,你可以使用bash shell脚本来批量修改文件名。假设你的txt文件(假设名为names.txt)的格式如下:

oldname1 newname1
oldname2 newname2
oldname3 newname3
...

你可以使用以下的bash脚本来批量修改文件名:

while read -r oldname newname
do
    mv "$oldname" "$newname"
done < names.txt

这个脚本的工作原理是这样的:read -r oldname newname会从names.txt文件中读取每一行,并将每一行的内容分割成两部分,分别赋值给变量oldnamenewname。然后,mv "$oldname" "$newname"命令会将旧文件名修改为新文件名。done < names.txt表示这个循环会读取names.txt文件中的每一行,直到文件结束。

注意:在运行这个脚本之前,你需要确保你有权限修改这些文件,并且这些文件确实存在。为了避免错误,你可以先在一个包含一些测试文件的目录中试运行这个脚本,看看结果是否符合你的预期。


我都不知道还可以这样的,最后的文件读取技巧,以及读取接下来两列文件居然可以使用样的:read -r oldname newname会从names.txt文件中读取每一行,并将每一行的内容分割成两部分,分别赋值给变量oldnamenewname

可以看到,完美改名了:

S12F/outs/web_summary.html
S12M/outs/web_summary.html
S15F/outs/web_summary.html
S15M/outs/web_summary.html
S1F/outs/web_summary.html
S1M/outs/web_summary.html
S2F/outs/web_summary.html
S2M/outs/web_summary.html
S5F/outs/web_summary.html
S5M/outs/web_summary.html

虽然我写出不来

但是我看得懂chatGPT给我的代码,因为有Linux基础,感觉从此以后大家都很少需要把一个技术学到出神入化了,因为再怎么厉害也不可能比chatGPT厉害,但是对技术的基本认知是需要的,不然看不懂chatGPT给我们的回答也不敢直接使用chatGPT给我们的代码,在Linux操作系统很多代码很危险。

而且,chatGPT有时候会给出一下似是而非的,暗藏bug的代码,这些都需要我们有基础认知才有可能更好的利用chatGPT的辅助。

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多