2011-10-08 138 views
0

我有一個shellcript,我從一個NSTask運行,我動態構建。除了一件事以外,一切正常:外殼:發現應該忽略空白

如果文件名包含一個空格,它將被find-command忽略。我像這樣使用它:'find -iname * .xxx'。

如果文件名看起來像'aaa bbb.xxx',比找不到。

任何幫助表示讚賞。

問候, 馬庫斯

+2

是的,不,那不是。 –

+0

我已經盡力回答你的問題,但如果我的回答沒有幫助,你將不得不張貼解釋問題的代碼。 – derobert

回答

0

find不關心,如果你的文件名有空格的。這不是你的問題。

如果您實際上是按照您的問題(find -iname *.xxx)鍵入的,則問題是您需要引用文件名稱模式以防止其擴展:find -iname '*.xxx'。注意模式周圍的引號;他們至關重要。

否則,問題很可能在於您如何處理您回來的文件名。例如,這是不行的:

for f in `find -iname '*.xxx'`; do 
    echo "file: $f" 
done 

,你會看到,反引號操作符實際分割上的空間(或$IFS,實際上)和你回來兩個「文件」:「AAA」和「BBB .XXX」。

+0

這裏''print0'選項'find'可能很有用。請注意,在'find'的輸出過程中,它需要額外的工作。 –

+0

@凱特湯普森:是的,經常有。如果「任何進程」是shell腳本的其餘部分,那麼http://stackoverflow.com/questions/1116992/capturing-output-of-find-print0-into-a-bash-array – derobert

0

逃脫這樣的模式:

find -iname '*.xxx' -print 

請考慮+1,如果它幫助。謝謝