[问题]在shell中如何编辑文件名称中含有空格的文件?

sh/bash/dash/ksh/zsh等Shell脚本
回复
yhntgbty
帖子: 21
注册时间: 2007-01-20 11:38
送出感谢: 0
接收感谢: 0

[问题]在shell中如何编辑文件名称中含有空格的文件?

#1

帖子 yhntgbty » 2007-08-16 11:46

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

#2

帖子 eexpress » 2007-08-16 12:05

for 的时候,后面的变量就已经内部展开了。你要在for以前,就用""或者''包括好文件名。
● 鸣学
头像
laborer
帖子: 1016
注册时间: 2005-10-25 11:15
送出感谢: 0
接收感谢: 1 次
联系:

#3

帖子 laborer » 2007-08-16 12:07

可以通过设置IFS凑合一下

代码: 全选

IFS="\n"
for i in `ls`; do echo $i; done
hreiser@oakland:~$ killall -9 wife
police@oakland:~$ sudo find / -user hreiser
court@oakland:~$ sudo mv /home/hreiser /jail/
court@oakland:~$ sudo usermod -d /jail/hreiser -s "/usr/sbin/chroot /jail/" hreiser
yhntgbty
帖子: 21
注册时间: 2007-01-20 11:38
送出感谢: 0
接收感谢: 0

#4

帖子 yhntgbty » 2007-08-16 14:19

eexpress 写了:for 的时候,后面的变量就已经内部展开了。你要在for以前,就用""或者''包括好文件名。
我接触shell时间很短 有些地方不太明白 还清赐教! :o
用“或者”包括?如何作?


BTW:谢谢三楼,我试过了 不行 ,这时候整体就是一个变量了 ?

代码: 全选

IFS="\n"
for i in `ls`; do echo " [>>>>$i<<<<]"; done
gregorian
帖子: 20
注册时间: 2007-04-02 15:04
送出感谢: 0
接收感谢: 0

#5

帖子 gregorian » 2007-08-16 23:45

不过做完做好还是把IFS=" " 给改会来
yhntgbty
帖子: 21
注册时间: 2007-01-20 11:38
送出感谢: 0
接收感谢: 0

#6

帖子 yhntgbty » 2007-08-17 10:17

四楼: 我已经说过 那个方法我试过了 不行!
头像
laborer
帖子: 1016
注册时间: 2005-10-25 11:15
送出感谢: 0
接收感谢: 1 次
联系:

#7

帖子 laborer » 2007-08-17 10:28

抱歉楼主,这样就可以了:

代码: 全选

IFS=$'\n' 
for i in `ls`; do echo " [>>>>$i<<<<]"; done
hreiser@oakland:~$ killall -9 wife
police@oakland:~$ sudo find / -user hreiser
court@oakland:~$ sudo mv /home/hreiser /jail/
court@oakland:~$ sudo usermod -d /jail/hreiser -s "/usr/sbin/chroot /jail/" hreiser
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙
送出感谢: 4 次
接收感谢: 256 次

#8

帖子 eexpress » 2007-08-17 11:31

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

其实,你不如用find去处理。容易多了。
● 鸣学
头像
BigSnake.NET
帖子: 12522
注册时间: 2006-07-02 11:16
来自: 廣州
送出感谢: 0
接收感谢: 7 次
联系:

#9

帖子 BigSnake.NET » 2007-08-19 13:40

ls | while read i ; do foo "$i" ; done
^_^ ~~~
要理解递归,首先要理解递归。

地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。
keoki
帖子: 9
注册时间: 2007-04-22 0:56
送出感谢: 0
接收感谢: 0

Re: [问题]在shell中如何编辑文件名称中含有空格的文件?

#10

帖子 keoki » 2011-02-18 17:43

加双引号
sk1418
帖子: 229
注册时间: 2007-07-01 17:36
系统: (En):System
来自: (En):address
送出感谢: 2 次
接收感谢: 3 次
联系:

Re: [问题]在shell中如何编辑文件名称中含有空格的文件?

#11

帖子 sk1418 » 2011-02-18 17:57

xargs -0 选项可以
---
regards,

Kent
回复

回到 “Shell脚本”