【发布时间】:2011-10-09 12:03:17
【问题描述】:
我正在尝试在带有 GNU sed 的 Windows 7 中使用 find 来递归地替换多个文件中的一行文本,跨多个目录。我查看了this question,但 PowerShell 解决方案似乎只适用于一个文件,我想从当前目录递归地使用具有特定扩展名的所有文件。我试过这个命令:
find "*.mako" -exec sed -i "s:<%inherit file="layout.mako"/>:<%inherit file="../layout.mako"/>:"
但这给了我一堆废话,并且不会更改任何文件:
---------- EDIT.MAKO
File not found - -EXEC
File not found - SED
File not found - -I
File not found - LAYOUT.MAKO/>:<%INHERIT FILE=../LAYOUT.MAKO/>:
我该怎么做?看来我应该安装我需要的所有工具,而无需安装 Cygwin 或 UnixUtils 或其他任何东西。
编辑:好的,使用 GNU find,我仍然无法到达任何地方,因为我无法让 find 部分工作:
> gfind -iname "*.mako" .
C:\Program Files (x86)\GnuWin32\bin\gfind.exe: paths must precede expression
> gfind . -iname "*.mako"
C:\Program Files (x86)\GnuWin32\bin\gfind.exe: paths must precede expression
> gfind -iname "*.mako" .
C:\Program Files (x86)\GnuWin32\bin\gfind.exe: paths must precede expression
由于this question,我最初没有在 Windows 7 中使用 GNU find。
编辑:
我尝试了以下方法,但 sed 没有以这种方式看到任何输入文件:
> ls -r | grep mako | sed -i 's/file="layout.mako"/file="..\/layout.mako"/'
sed.exe: no input files
【问题讨论】:
标签: windows-7 powershell replace sed find