ls输出文件文件名含空格,做其它命令参数所导致的bug

ls输出文件文件名含空格,做其它命令参数所导致的bug

以下是bash编程中一段有bug的代码
montage -geometry +0+0 -title 2x `ls *.jpg` preview.jpg
当当前文件夹内含有
1 2.jpg
这样的一个文件时会发生错误

用通配符
montage -geometry +0+0 -title 2x `ls *.jpg | sed -e 's/\ /\\\ /g'` preview.jpg
也会发生错误

想了一晚上,解决不了
最后想出了个建议,将所有文件名的空格都用_代替就省事多了
如果不用_代替,这段代码要怎么改才能变正确呢?      
不知道 montage 是什么东东 提问时最好把问题抽象出来, 不要跟具体的问题相关, 否则别人不容易看懂      
用双引号引起来能否解决问题呢?      
抽象起来就是这句话:
ls输出文件文件名含空格,做其它命令参数会出现错误

举另一个简单的实例如下
[root@localhost 未命名文件夹 3]# ls
1 2.jpg  3.jpg  4.jpg  sample.gif
[root@localhost 未命名文件夹 3]# ls `ls *.jpg`
ls: 无法访问 1: 没有那个文件或目录
ls: 无法访问 2.jpg: 没有那个文件或目录
3.jpg  4.jpg
[root@localhost 未命名文件夹 3]#

有时,我们会用到这样的命令
command `ls *` ouput_file

用通配符加引号也没用      
这种用法好像没有完美解决方案       
引用:
原帖由 dearvoid 于 2008-8-27 12:55 发表
这种用法好像没有完美解决方案
谢谢你~
辛苦了

      
find -print0  | xargs -0 your_command
应该可以解决

或是 ls | whie read filename; do  your_command "$filename"; done      
刚翻了一下man ls
发现还有这么一个参数 -Q

ls -Q | xargs ls -l 也是可用的      
楼上的反对例子是?