+ -
当前位置:首页 → 问答吧 → 批量替换多个文件中特定文本

批量替换多个文件中特定文本

时间:2007-08-16

来源:互联网

有的时候需要打开或者编辑一些文件 而这个文件的文件名称中含有空格 在shell中这个文件明就被认为是两个文件了
举例说明:
某目录含有两个文件,第一个叫a b.c (含有一个空格) 第二个叫d e.f
利用变量FILES接收文件名称FILES=`ls` 这个时候再用for i in $FILES就会出错了 因为空格把文件明区分开了 边成了四个文件 a 、b.c、 d 、e.f,我该怎么才能区分呢?是不是不应该使用FILES=`ls`? 如果这样不对,那我使用什么才能作?
请高人指点 谢谢

作者: yhntgbty   发布时间: 2007-08-16

for 的时候,后面的变量就已经内部展开了。你要在for以前,就用""或者''包括好文件名。

作者: eexpress   发布时间: 2007-08-16

可以通过设置IFS凑合一下
代码:
IFS="\n"
for i in `ls`; do echo $i; done

作者: laborer   发布时间: 2007-08-16

eexpress 写道:
for 的时候,后面的变量就已经内部展开了。你要在for以前,就用""或者''包括好文件名。


我接触shell时间很短 有些地方不太明白 还清赐教!
用“或者”包括?如何作?


BTW:谢谢三楼,我试过了 不行 ,这时候整体就是一个变量了 ?
代码:
IFS="\n"
for i in `ls`; do echo " [>>>>$i<<<<]"; done

作者: yhntgbty   发布时间: 2007-08-16

不过做完做好还是把IFS=" " 给改会来

作者: gregorian   发布时间: 2007-08-16

四楼: 我已经说过 那个方法我试过了 不行!

作者: yhntgbty   发布时间: 2007-08-17

抱歉楼主,这样就可以了:
代码:
IFS=$'\n'
for i in `ls`; do echo " [>>>>$i<<<<]"; done

作者: laborer   发布时间: 2007-08-17

别动LFS吧。
以前,我是ls -1处理的。先期加""。老的bash都删除了。找不到了。思路是这样的。

其实,你不如用find去处理。容易多了。

作者: eexpress   发布时间: 2007-08-17

ls | while read i ; do foo "$i" ; done

作者: BigSnake.NET   发布时间: 2007-08-19

加双引号

作者: keoki   发布时间: 2011-02-18

xargs -0 选项可以

作者: sk1418   发布时间: 2011-02-18

热门下载

更多