2011-11-05 49 views
2

我有一個shell腳本這一行:UNIX發現:如何處理包含路徑空間

rm -rf `find something` 

的問題是,如果發現返回一個空格的路徑,當然rm解釋空間作爲分隔符在兩個不同的路徑之間並且命令失敗。

有沒有辦法告訴find將引號放在它返回的路徑或其他方法來解決這個問題?

回答

0

你可以這樣做:

find start_dir -name something -print0 | xargs -0 /bin/rm -rf 
+1

如何,第二個應對路徑的空間? –

+0

它不;它缺少'find'和'xargs'的null終止符(這很容易修復):'find start_dir -name something -print0 | xargs -0/bin/rm -rf' – OnlineCop

1

find something -exec rm {} \;,但我有點擔心...

4

要在安全方面,你可以使用

$ find start_dir -print0 -name something | xargs --null rm -rf 

使用NUL( 0)字符作爲文件之間的分隔符。

+3

'xargs --null'也可以寫成'xargs -0'。 –

+2

'-print0'和'-0'選項是GNU擴展名,所以在某些系統中,您需要使用'gfind'和'gxargs'而不是'find'和'xargs'。 –

0

稍快的方式(代替「東西」的任何條件(S)你想):

find something -exec rm -rf {} +