【发布时间】:2021-08-27 23:36:43
【问题描述】:
我有几个文件夹,如 S1S、S2S、S3S ...,在每个文件夹中都有一个 file1。 这个file1在每个文件夹中都是一致的
1990.A.BHT_S1S.dat
1994.I.BHT_S1S.dat
1995.K.BHT_S1S.dat
同样S1S扩展名根据文件夹变化。
我正在尝试使用此命令将所有文件夹的这些名称更改为 1990.A.BHT 类型
for dir in S*
do
cd $dir
sed -i 's/_${dir}\.dat//g' file1 > file2
cd ../
done
但我得到一个文件 2 的空文件
有人可以帮我找出我的错误吗?
【问题讨论】:
-
您因为
-i而修改了您的file1文件。 -
你好@konsolebox 对不起,你是什么意思?我也试过
sed 's/_${dir}\.dat//' file1 > file2 -
-i选项允许就地修改目标文件并且不向标准输出发送输出。这就是为什么你得到空的file2文件,并且你的file1文件已经被修改(可能)。更详细地说,1990.A.BHT_S1S.dat、1994.I.BHT_S1S.dat和1995.K.BHT_S1S.dat的字符串(很可能)已经在file1中进行了更改。我不确定您将如何恢复这些更改,或者您是否想保留它们。也许你有一个我不知道的备份。由你决定。我刚刚告诉你-i的效果。 -
谢谢@konsolebox 我明白了。使用 -i 后,我的 file1 没有被修改。但我有备份以防万一。