2014-07-16 97 views
0

我用Windoes 7; Windows PowerShell中;豪華〜混帳FIND.EXE「:缺少參數`-exec」

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

你用'/ c/unix2dos/bin/unix2dos'試過了嗎?你用_pure git bash_來嘗試嗎? –

+0

如果我嘗試「$ find。-type f -name'* .cs'-exec unix2dos'{}'+」。 gtom GitBash我明白了; 「找到:缺少參數到'-exec'」 – Sharlikran

+0

如果我嘗試'找。 -type f -name'* .php'-exec c:/ unix2dos/bin/unix2dos'{}'+。 \「然後我得到這個; unix2dos:將文件./ObjectControls/RecordEditor.Designer.cs轉換爲DOS格式... unix2dos:跳過+。,不是常規文件。 – Sharlikran

回答

3

純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 #> } 
+0

完美運作。我很高興終於有辦法做到這一點。我製作了一個帶有文件列表的Windows批處理文件,然後運行該批處理文件。我真的很感謝答案。如果可以的話, – Sharlikran

+1

+∞。掌握PowerShell並仍然試圖通過一些最神祕的Unix工具來破解你的方式(儘管它很擅長處理它,它是一種令人憎惡的東西)是一種解決問題的奇怪方式。 – Joey

+1

我不得不找到這個解決方案,因爲我無法提交我自己的repo,我從SVN轉換爲Git。如果我將文件從SVN倉庫複製到Git文件夾並嘗試進行提交,它會告訴我它不能,因爲行結束會改變。所以我搜索了,原來的鏈接建議找到。所以,當在羅馬...如果我有我的方式有一個GUI,我永遠不會需要一個命令行。 – Sharlikran

2

我做了一些更多的搜索GitBash command lines,發現'{}'是查找當前使用的文件。 +.應該表示當前目錄應包含在exec命令中。但是,它似乎不適用於Windows的GitBash。

所以,我已經發現了兩個選項

  1. 厄里斯使用GitBash建議上述
  2. 與GitBash以下命令行的Windows

find . -type f -name '<file-name>' -exec <path for unix2dos> '{}' \;

範例什麼:

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 Path語句中有c:\unix2dos\bin將無法​​使用GitBash。