加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

使用BASH搜索文件夹名称中包含空格的子文件夹

发布时间:2020-12-15 21:33:23 所属栏目:安全 来源:网络整理
导读:我正在编写一个 shell脚本,它遍历一组IMAP文件夹. 鉴于: WORKPATH=/var/mail/mydomain.com/myaccount/ 我想列出里面的所有子文件夹. 轻松找到: for SUB_FOLDER in $(find "$WORKPATH" -type d)do echo "SUB_FOLDER: $SUB_FOLDER"done 但是:其中一些文件夹
我正在编写一个 shell脚本,它遍历一组IMAP文件夹.

鉴于:

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只为4个for循环instad生成2个令牌,或者迭代列表的替代方法.

解决方法

使用while循环:

while read SUB_FOLDER; do 
    echo "SUB_FOLDER: $SUB_FOLDER"; 
done < <(find "$WORKPATH" -type d)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读