分页: 1 / 1

遍历文件遇到带空格的目录

发表于 : 2011-09-20 12:14
sdjkx

代码: 全选


for i in ${ScriptDirectory}/* ;  do
     echo "$i"
done

ScriptDirectory是个路径,有带空格的目录名,然后echo输出就被那个空格截断了

如何搞?

Re: 遍历文件遇到带空格的目录

发表于 : 2011-09-20 12:27
Methuselar
硬要用shell来搞得话, 可以暂时把IFS替换掉:

OLDIFS=$IFS
IFS=$(echo -en "\n\b")
for i in ${ScriptDirectory}/* ; do
echo "$i"
done
IFS=$OLDIFS

最好还是用find吧. 个人喜欢coreutils用足,shell次之...

Re: 遍历文件遇到带空格的目录

发表于 : 2011-09-20 13:15
sdjkx
Methuselar 写了:硬要用shell来搞得话, 可以暂时把IFS替换掉:

OLDIFS=$IFS
IFS=$(echo -en "\n\b")
for i in ${ScriptDirectory}/* ; do
echo "$i"
done
IFS=$OLDIFS

最好还是用find吧. 个人喜欢coreutils用足,shell次之...

还是不行, 提示 IFS not found

Re: 遍历文件遇到带空格的目录

发表于 : 2011-09-20 13:21
lilydjwg

代码: 全选

find "${ScriptDirectory}" ! -name '.'

Re: 遍历文件遇到带空格的目录

发表于 : 2011-09-20 14:33
我就是我2
sdjkx 写了:

代码: 全选


for i in ${ScriptDirectory}/* ;  do
     echo "$i"
done

ScriptDirectory是个路径,有带空格的目录名,然后echo输出就被那个空格截断了

如何搞?

代码: 全选

for i in “${ScriptDirectory}”/* ;  do
     echo "$i"
done

Re: 遍历文件遇到带空格的目录

发表于 : 2011-09-20 17:30
sdjkx
感谢4楼和5楼的回复。

find 可以我知道也会,我只是想找到不用find的解决此问题的方法。

加引号的方法,我也想到过,但我是是这样加的
“${ScriptDirectory}/*”

当然不行。


谢谢两位,问题搞定!

Re: 遍历文件遇到带空格的目录

发表于 : 2011-09-20 18:04
naturalaw
sdjkx 写了:感谢4楼和5楼的回复。

find 可以我知道也会,我只是想找到不用find的解决此问题的方法。

加引号的方法,我也想到过,但我是是这样加的
“${ScriptDirectory}/*”

当然不行。


谢谢两位,问题搞定!
那是因为你不明白引号的意思?
引号要把变量给引起嘛。/分明不属于变量名

Re: 遍历文件遇到带空格的目录

发表于 : 2011-09-21 10:56
naturalaw
sdjkx 写了:感谢4楼和5楼的回复。

find 可以我知道也会,我只是想找到不用find的解决此问题的方法。

加引号的方法,我也想到过,但我是是这样加的
“${ScriptDirectory}/*”

当然不行。


谢谢两位,问题搞定!
:em20 还用了全角的引号。it should be ""

Re: 遍历文件遇到带空格的目录

发表于 : 2011-09-23 17:51
leo_songwei
替换IFS噻

IFS=$'\n'

几个字就搞定,看你写得们好恐怖的,骇死我了。

Re: 遍历文件遇到带空格的目录

发表于 : 2011-10-13 22:35
没人疼
sdjkx 写了:

代码: 全选


for i in ${ScriptDirectory}/* ;  do
     echo "$i"
done

ScriptDirectory是个路径,有带空格的目录名,然后echo输出就被那个空格截断了

如何搞?

代码: 全选

find  ${ScriptDirectory}/ -type f  -print0|xargs -0 ls -l

Re: 遍历文件遇到带空格的目录

发表于 : 2011-10-14 2:55
fnan
kose3@kose3-laptop:~$ ls -1 b
a b
n j
kose3@kose3-laptop:~$ s="b"
kose3@kose3-laptop:~$ for i in ${s}/*;do echo $i;done
b/a b
b/n j
kose3@kose3-laptop:~$
#怎么回事?
#明白了 ,s="b b"
#没 必要 就 不 动 IFS,find 效率不 高 ,五楼 的 .

Re: 遍历文件遇到带空格的目录

发表于 : 2011-10-14 3:53
fnan
没人疼 写了:
sdjkx 写了:

代码: 全选


for i in ${ScriptDirectory}/* ;  do
     echo "$i"
done

ScriptDirectory是个路径,有带空格的目录名,然后echo输出就被那个空格截断了

如何搞?

代码: 全选

find  ${ScriptDirectory}/ -type f  -print0|xargs -0 ls -l
#不 加引号?

Re: 遍历文件遇到带空格的目录

发表于 : 2011-10-14 9:28
eexpress
for 那里就自动扩展了的。
你最好cd "$dir" 进入目录。
破shell就是这样麻烦的。来perl吧。

Re: 遍历文件遇到带空格的目录

发表于 : 2011-10-17 11:01
没人疼
fnan 写了:
没人疼 写了:
sdjkx 写了:

代码: 全选


for i in ${ScriptDirectory}/* ;  do
     echo "$i"
done

ScriptDirectory是个路径,有带空格的目录名,然后echo输出就被那个空格截断了

如何搞?

代码: 全选

find  ${ScriptDirectory}/ -type f  -print0|xargs -0 ls -l
#不 加引号?
不用

Re: 遍历文件遇到带空格的目录

发表于 : 2011-10-17 19:05
fnan
没人疼 写了:
fnan 写了:
没人疼 写了:
sdjkx 写了:

代码: 全选


for i in ${ScriptDirectory}/* ;  do
     echo "$i"
done

ScriptDirectory是个路径,有带空格的目录名,然后echo输出就被那个空格截断了

如何搞?

代码: 全选

find  ${ScriptDirectory}/ -type f  -print0|xargs -0 ls -l
#不 加引号?
不用
#LZ想解决目录名带空格,不是文件名带空格。