从字符串“ Generation”的文件夹中的所有文件中删除行

时间:2018-10-26 20:07:38

标签: string windows batch-file sed

我想在名为KCG的文件夹下的所有文件中删除带有字符串“ Generation”的行。我在Windows操作系统命令提示符下尝试了以下操作:

sed -i '/Generation/d' file

但是收到以下错误消息:

sed: can't read file: No such file or directory

接下来我尝试了

sed -i '/Generation/d' airport_related_altitudes_derived_data.c

这可行,但是我不想每次都输入文件夹中所有文件的文件名。是否有命令可以在文件夹下的所有文件中递归查找字符串?

2 个答案:

答案 0 :(得分:0)

尝试一下:

file_string = 'Lots of Data'
with io.open(file_name,'w', newline='\r\n') as file:
    file.write(unicode(file_string))

这将递归地找到当前目录(“。”)下的所有文件(“ -type f”),并在每个文件(“ {}”)上调用“ sed -i'/Generation/d'”。

答案 1 :(得分:0)

一种 windows方式,用于枚举当前文件夹中某个模式/文件类型的文件。

@Echo off
For %%A in (*.c) Do sed -i '/Generation/d' %%A

从起始路径递归

For /r "X:\start\path" %%A in (*.c) do sed -i '/Generation/d' %%A

使用find /vfindstr /v的纯批处理方式来删除包含单词的行,但是需要使用不同的输出文件名,而无需就地编辑。

@Echo off
for %%A in (*.c) do findstr /vi "Generation" "%%~A" >"%%~dpnA_new%%~xA"

在扩展名之前添加_new的新文件。

当然可以将旧名称重命名为.bak并将更改的版本写为原始名称。