find.exe“:缺少`-exec'的参数

时间:2014-07-16 00:16:48

标签: git powershell

我使用Windoes 7; Windows PowerShell;豪华〜GIT中。

find . -type f -name '*.php' -exec c:/unix2dos/bin/unix2dos '{}' +. \;

E:\TESSnip_Git\tesvsnip [tag-v4.3.0 +4 ~0 -0 | +0 ~308 -0]> find . -type f -name
 '*.php' -exec c:/unix2dos/bin/unix2dos '{}' +. \;
"C:/Users/DanoPDX/AppData/Local/GitHub/PortableGit_054f2e797ebafd44a30203088cd3d
58663c627ef/bin/find.exe": missing argument to `-exec'
E:\TESSnip_Git\tesvsnip [tag-v4.3.0 +4 ~0 -0 | +0 ~308 -0]>

该行不适用于Windows 7并返回错误。如果我有' unix2dos'在我的路径中为什么我不能指定它的确切路径?

2 个答案:

答案 0 :(得分:4)

Pure Powershell答案:

Get-ChildItem -Recurse -File -Filter '*.php' | 
    Foreach-Object {
        & 'c:/unix2dos/bin/unix2dos' $_.FullName <# other unix2dos argshere #> 
    }

或者,更短的方式:

gci -rec -file -filter *.php  | % { c:\unix2dos\bin\unix2dos $_.FullName <# other args #> }

答案 1 :(得分:2)

我还搜索了GitBash command lines,发现'{}'是找到的当前文件。 +.应该表示应该包含exec命令的当前目录。但是,它似乎不适用于Windows的GitBash。

所以我找到了两个选项

  1. Eris上面提出的建议
  2. 以下命令行与GitBash for Windows
  3. find . -type f -name '<file-name>' -exec <path for unix2dos> '{}' \;

    使用GitBash的示例:

    find . -type f -name '*.php' -exec /c/unix2dos/bin/unix2dos '{}' \;
    find . -type f -name '*.cs' -exec /c/unix2dos/bin/unix2dos '{}' \;
    find . -type f -name '*.txt' -exec /c/unix2dos/bin/unix2dos '{}' \;
    

    注意:

    上面的示例显示了/ c / unix2dos / bin / unix2dos的路径,因为我把它放在了这里。在Windows路径语句中使用c:\unix2dos\bin将无法使用GitBash。