我想在名为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
这可行,但是我不想每次都输入文件夹中所有文件的文件名。是否有命令可以在文件夹下的所有文件中递归查找字符串?
答案 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 /v
或findstr /v
的纯批处理方式来删除包含单词的行,但是需要使用不同的输出文件名,而无需就地编辑。
@Echo off
for %%A in (*.c) do findstr /vi "Generation" "%%~A" >"%%~dpnA_new%%~xA"
在扩展名之前添加_new
的新文件。
当然可以将旧名称重命名为.bak并将更改的版本写为原始名称。