分页: 1 / 1
[问题]在shell中如何编辑文件名称中含有空格的文件?
发表于 : 2007-08-16 11:46
由 yhntgbty
有的时候需要打开或者编辑一些文件 而这个文件的文件名称中含有空格 在shell中这个文件明就被认为是两个文件了
举例说明:
某目录含有两个文件,第一个叫a b.c (含有一个空格) 第二个叫d e.f
利用变量FILES接收文件名称FILES=`ls` 这个时候再用for i in $FILES就会出错了 因为空格把文件明区分开了 边成了四个文件 a 、b.c、 d 、e.f,我该怎么才能区分呢?是不是不应该使用FILES=`ls`? 如果这样不对,那我使用什么才能作?
请高人指点 谢谢
发表于 : 2007-08-16 12:05
由 eexpress
for 的时候,后面的变量就已经内部展开了。你要在for以前,就用""或者''包括好文件名。
发表于 : 2007-08-16 12:07
由 laborer
可以通过设置IFS凑合一下
代码: 全选
IFS="\n"
for i in `ls`; do echo $i; done
发表于 : 2007-08-16 14:19
由 yhntgbty
eexpress 写了:for 的时候,后面的变量就已经内部展开了。你要在for以前,就用""或者''包括好文件名。
我接触shell时间很短 有些地方不太明白 还清赐教!
用“或者”包括?如何作?
BTW:谢谢三楼,我试过了 不行 ,这时候整体就是一个变量了 ?
代码: 全选
IFS="\n"
for i in `ls`; do echo " [>>>>$i<<<<]"; done
发表于 : 2007-08-16 23:45
由 gregorian
不过做完做好还是把IFS=" " 给改会来
发表于 : 2007-08-17 10:17
由 yhntgbty
四楼: 我已经说过 那个方法我试过了 不行!
发表于 : 2007-08-17 10:28
由 laborer
抱歉楼主,这样就可以了:
代码: 全选
IFS=$'\n'
for i in `ls`; do echo " [>>>>$i<<<<]"; done
发表于 : 2007-08-17 11:31
由 eexpress
别动LFS吧。
以前,我是ls -1处理的。先期加""。老的bash都删除了。找不到了。思路是这样的。
其实,你不如用find去处理。容易多了。
发表于 : 2007-08-19 13:40
由 BigSnake.NET
ls | while read i ; do foo "$i" ; done
Re: [问题]在shell中如何编辑文件名称中含有空格的文件?
发表于 : 2011-02-18 17:43
由 keoki
加双引号
Re: [问题]在shell中如何编辑文件名称中含有空格的文件?
发表于 : 2011-02-18 17:57
由 sk1418
xargs -0 选项可以