分页: 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}/*”
当然不行。
谢谢两位,问题搞定!

还用了全角的引号。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想解决目录名带空格,不是文件名带空格。