如何在FreeBSD/bin/sh中迭代包含空格的文件

如何在FreeBSD/bin/sh中迭代包含空格的文件,sh,freebsd,Sh,Freebsd,我正在尝试使用FreeBSD/bin/sh shell对一组包含空间的文件执行操作: user@host:~/temp/2011 $ find . | grep '03-11' ./01jan/ES 03-11.txt ./02feb/ES 03-11.txt ./03mar/ES 03-11.txt ./04apr/ES 03-11.txt ./05may/ES 03-11.txt user@host:~/temp/2011 $ for i in `find . | grep '03-11'`

我正在尝试使用FreeBSD/bin/sh shell对一组包含空间的文件执行操作:

user@host:~/temp/2011 $ find . | grep '03-11'
./01jan/ES 03-11.txt
./02feb/ES 03-11.txt
./03mar/ES 03-11.txt
./04apr/ES 03-11.txt
./05may/ES 03-11.txt
user@host:~/temp/2011 $ for i in `find . | grep '03-11'`; do echo "$i"; done
./01jan/ES
03-11.txt
./02feb/ES
03-11.txt
./03mar/ES
03-11.txt
./04apr/ES
03-11.txt
./05may/ES
03-11.txt
虽然我想得到:

user@host:~/temp/2011 $ find . | grep '03-11'
./01jan/ES 03-11.txt
./02feb/ES 03-11.txt
./03mar/ES 03-11.txt
./04apr/ES 03-11.txt
./05may/ES 03-11.txt
user@host:~/temp/2011 $ for i in `find . | grep '03-11'`; do echo "$i"; done
./01jan/ES 03-11.txt
./02feb/ES 03-11.txt
./03mar/ES 03-11.txt
./04apr/ES 03-11.txt
./05may/ES 03-11.txt

在这种情况下,应如何处理空格?

您需要将
IFS
设置为不包含空格字符的值

例如:

(IFS=$'\n'; for i in `find . | grep '03-11'`; do echo "$i"; done)

有关详细信息,请参阅。

有些人会努力争取

find-类型f | grep'03-11'| xargs-I{}echo{}

由于一些未知的原因,我从未使用过
xargs
,尽管每次看到它我都觉得“这是一个非常有用的命令”,顺便说一句,xargs的FreeBSD实现不支持
-d\n