2011-08-03 44 views
0

我嘗試爲所有現有的* .php和* .phtml文件添加一個svn:keywords屬性。因此,我用這個命令:Xargs不聽stdin

find . -regex '.*\.php' -o -regex '.*\.phtml'|xargs svn propset svn:keywords "Id" 

這要根據Mateusz Loskot的屬性添加到所有文件。如果我運行find . -regex '.*\.php' -o -regex '.*\.phtml',則會找到所有文件,但xargs會返回此消息:xargs: svn: No such file or directory

我還嘗試導出找到的列表(>> ~/temp)並使用xargs -a從文件輸入中讀取參數,但未成功。我怎樣才能更新我所有的PHP文件?

PS。我用的Kubuntu的Linux納蒂(11.04),其中已建成在bash 4.2.8和4.4.2 xargs的(如果可能無關緊要)

+3

「SVN:沒有這樣的文件或目錄」聽起來像是你還沒有安裝顛覆。什麼'svn --version'返回? – l0b0

+1

除了l0b0的解決方案之外,這是http://unix.stackexchange.com/ – Matten

+0

Aarg的問題!我安裝了kdesvn並且工作得很好。我認爲kdesvn會對svn有依賴性,這不是,因此Subversion沒有安裝。所以現在和xargs工作正常!謝謝l0b0:s –

回答

1

你的命令看起來不錯。看來xargsPATH找不到svn命令。驗證它是否可用或使用完整文件路徑(which svn應顯示到svn的完整路徑)。

爲了防止文件名問題空間,我會建議-print0論據find-0xargs

find . -name '\*.php' -o -name '\*.phtml' -print0 | xargs -0 svn propset svn:keywords "Id" 
0

您可以嘗試在這裏慣用的招數,如:

find ... | while read i ; do svn propset svn:keywords Id "$i" ; done 
+1

在這個特定的情況下,你會得到同樣的錯誤。儘管您的解決方案可能適用於某些解決方案,但解決_this_問題並無用處。另外,在這種情況下,xargs正是正確的命令。建議使用while/read可以使代碼變得更糟,而不是更好。 –

+1

我不同意。這可能是一個解決方案*如果*問題與空格的文件名有關,在問題中沒有正確處理。 –