问题
在某些目录中,我的文件名中有一些带空格(或者某些特殊字符)的文件。
尝试每行列出一个文件,我使用ls -1
但名称中包含空格的文件未按预期处理。
示例
我有这三个文件:
$ ls -1
My file 1.zip
My file 2.zip
My file 3.zip
我希望列出并对它们做些什么,所以我使用这样的循环:
for i in `ls -1 My*.zip`; do
# statements
echo $i;
# Do something with each file;
done
但是喜欢用空格分割名称:
My
file
1.zip
My
file
2.zip
My
file
3.zip
问题
我该如何解决这个问题?shell中是否有其他选择?
答案 0 :(得分:3)
请勿使用ls
的输出,请使用:
for f in *.zip; do
echo "processing $f"
done
答案 1 :(得分:2)
不使用ls
,并正确引用。
for i in My*.zip
do
echo "$i"
done
答案 2 :(得分:0)
shopt -s dotglob
for i in *;
do :; # work on "$i"
done
shopt -u dotglob
默认情况下,以点开头的文件是特殊的,因为*
与它们不匹配。