我有一個shell腳本這一行:UNIX發現:如何處理包含路徑空間
rm -rf `find something`
的問題是,如果發現返回一個空格的路徑,當然rm
解釋空間作爲分隔符在兩個不同的路徑之間並且命令失敗。
有沒有辦法告訴find
將引號放在它返回的路徑或其他方法來解決這個問題?
我有一個shell腳本這一行:UNIX發現:如何處理包含路徑空間
rm -rf `find something`
的問題是,如果發現返回一個空格的路徑,當然rm
解釋空間作爲分隔符在兩個不同的路徑之間並且命令失敗。
有沒有辦法告訴find
將引號放在它返回的路徑或其他方法來解決這個問題?
你可以這樣做:
find start_dir -name something -print0 | xargs -0 /bin/rm -rf
find something -exec rm {} \;
,但我有點擔心...
要在安全方面,你可以使用
$ find start_dir -print0 -name something | xargs --null rm -rf
使用NUL( 0)字符作爲文件之間的分隔符。
'xargs --null'也可以寫成'xargs -0'。 –
'-print0'和'-0'選項是GNU擴展名,所以在某些系統中,您需要使用'gfind'和'gxargs'而不是'find'和'xargs'。 –
稍快的方式(代替「東西」的任何條件(S)你想):
find something -exec rm -rf {} +
如何,第二個應對路徑的空間? –
它不;它缺少'find'和'xargs'的null終止符(這很容易修復):'find start_dir -name something -print0 | xargs -0/bin/rm -rf' – OnlineCop