我使用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'在我的路径中为什么我不能指定它的确切路径?
答案 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。
所以我找到了两个选项
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。