我有一个shellcript,我从一个NSTask运行,我动态构建。除了一件事以外,一切正常:外壳:发现应该忽略空白
如果文件名包含一个空格,它将被find-command忽略。我像这样使用它:'find -iname * .xxx'。
如果文件名看起来像'aaa bbb.xxx',比找不到。
任何帮助表示赞赏。
问候, 马库斯
我有一个shellcript,我从一个NSTask运行,我动态构建。除了一件事以外,一切正常:外壳:发现应该忽略空白
如果文件名包含一个空格,它将被find-command忽略。我像这样使用它:'find -iname * .xxx'。
如果文件名看起来像'aaa bbb.xxx',比找不到。
任何帮助表示赞赏。
问候, 马库斯
find
不关心,如果你的文件名有空格的。这不是你的问题。
如果您实际上是按照您的问题(find -iname *.xxx
)键入的,则问题是您需要引用文件名称模式以防止其扩展:find -iname '*.xxx'
。注意模式周围的引号;他们至关重要。
否则,问题很可能在于您如何处理您回来的文件名。例如,这是不行的:
for f in `find -iname '*.xxx'`; do
echo "file: $f"
done
,你会看到,反引号操作符实际分割上的空间(或$IFS
,实际上)和你回来两个“文件”:“AAA”和“BBB .XXX”。
这里''print0'选项'find'可能很有用。请注意,在'find'的输出过程中,它需要额外的工作。 –
@凯特汤普森:是的,经常有。如果“任何进程”是shell脚本的其余部分,那么http://stackoverflow.com/questions/1116992/capturing-output-of-find-print0-into-a-bash-array – derobert
逃脱这样的模式:
find -iname '*.xxx' -print
请考虑+1,如果它帮助。谢谢
是的,不,那不是。 –
我已经尽力回答你的问题,但如果我的回答没有帮助,你将不得不张贴解释问题的代码。 – derobert