Sed在Windows中创建不可删除的文件

Zia*_*hoy 19 sed windows-server-2003

我正在尝试在Windows Server 2003中运行以下命令,但是sed创建了一堆我无法从当前目录中的命令行删除的文件.

for /R %f in (*.*) do "C:\Program Files\gnuwin32\bin\sed.exe" -i "s/bad/good/g" "%f"

有没有人有什么建议?神奇的是,我可以使用Windows资源管理器删除文件.

根据要求,这里有一些示例文件名:

  • sed0E3WZJ
  • sed5miXwt
  • sed6fzFKh

而且,更多故障排除信息......

  • 它来自命令提示符和批处理文件
  • 如果我只需要在一个目录上运行sed,那么我就可以了sed "s/bad/good/g" *.*,一切正常.唉,我还需要它来处理所有的子目录.
  • 我只安装了Sed.
  • Sed正在创建文件

NP *_*ete 24

我复制了你的设置,我有以下观察.

  1. 我不认为循环中存在问题.简单命令"C:\ Program Files\gnuwin32\bin\sed.exe"-i"s/bad/good/g" . - 创建相同的临时文件集.
  2. 这些文件确实是由sed创建的.当"就地"(-i)选项打开时,sed会创建这些临时文件.在正常过程中,sed实际上使用对"unlink"库的调用来删除文件(即在cygwin中发生的事情).在gnuwin32的情况下,看起来'unlink'失败了.我一直无法弄明白为什么.我猜测,unlink调用可能依赖于gnuwin32'coreutils'库,并试图下载并安装coreutils库 - 没有骰子.
  3. 如果在执行sed命令之前删除父文件夹中的"只读"限制,则可以从Windows命令提示符中删除临时文件.所以这应该给你一些暂时的喘息机会.

我认为我们现在有足够的信息来提出错误报告.如果您同意,我认为将它引起负责gnuwin32的好人的注意并向他们寻求帮助可能是一个好主意.

同时,以下版本清除其临时文件:

  • 这是一个已知的错误(http://sourceforge.net/projects/gnuwin32/forums/forum/74807/topic/845128).我已经提交了一份错误报告,但我没有希望(https://sourceforge.net/tracker/?func=detail&aid=2931036&group_id=23617&atid=379173). (4认同)