用Bash创建一个新的文件,名字相同,但小写。

问题描述 投票:0回答:1

我有一个问题,在一个作业中,我必须打开一个文件,并使用 sed 命令来改变一些东西,然后把输出放到一个新的文件中。更改部分不是最难的,但将输出结果写入新文件才是问题所在。假设我的起始文件叫 ABC1d.gb 而输出文件必须调用 abc1d.gb,当我尝试这个与 >>> 它将或覆盖开头的文件并清空它,或者它将把输出附加到 ABC1d.gb 文件。所以,我想知道,如果我可以甚至使一个文件 abc1d.gb 如果可以的话,我也可以把它应用到我的作业中吗?

先谢谢你

我的代码行,我现在使用的是。

cat ABC1d.gb | sed 's/ABC/abc/g' > abc1d.gb

EDITUPDATE:问题出在我的系统上, 我通过windowscommands把我工作的文件夹变成了大小写敏感的, 现在它就像它应该的那样. 问题不在于代码,而在于系统文件夹...。

bash ubuntu
1个回答
0
投票

你的命令只有在以下情况下才会有问题 ABC1d.gbabc1d.gb 是同一个文件,如果你使用的是不区分大小写的文件系统,就会发生这种情况。

解决的办法是写入一个临时文件,然后重新命名它。

sed 's/ABC/abc/g' ABC1d.gb > abc1d.temp
mv abc1d.temp abc1d.gb
© www.soinside.com 2019 - 2024. All rights reserved.