我正在编写一个遍历一组 IMAP 文件夹的 shell 脚本。
鉴于:
WORKPATH=/var/mail/mydomain.com/myaccount/
我想列出里面的所有子文件夹。
轻松查找:
for SUB_FOLDER in $(find "$WORKPATH" -type d)
do
echo "SUB_FOLDER: $SUB_FOLDER"
done
但是:其中一些文件夹的名称中有空格,例如:
/var/mail/mydomain.com/myaccount/.Deleted Mails/
/var/mail/mydomain.com/myaccount/.Junk Mails/
这使得上面的代码打印出以下内容:
SUB_FOLDER: /var/mail/mydomain.com/myaccount/.Deleted
SUB_FOLDER: Mails/
SUB_FOLDER: /var/mail/mydomain.com/myaccount/.Junk
SUB_FOLDER: Mails/
我曾尝试使用 -print0 选项并通过管道连接到 xargs -0,但我没有运气。玩 IFS 对输出的不利影响比需要的还要多。
真的可以使用提示如何使 find 仅将 2 个标记添加到 4 的 for 循环中,或者迭代列表的替代方法。