2011-10-08 141 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,如果它帮助。谢谢