【问题标题】:search sub folder with space in folder name using BASH使用 BASH 在文件夹名称中搜索带有空格的子文件夹
【发布时间】:2013-07-14 21:25:48
【问题描述】:

我正在编写一个遍历一组 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 对输出的不利影响比需要的还要多。

真的可以使用提示如何 make find 仅将 2 个标记添加到 4 的 for 循环中,或者迭代列表的替代方法。

【问题讨论】:

    标签: bash find


    【解决方案1】:

    使用while 循环:

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

    【讨论】:

    • 谢谢!我疯了,试图调试正在发生的事情。与您的示例相比,我系统上的语法略有不同。我用“$”替换了最后一个“
    • 呃...忽略替换“
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-17
    • 2010-10-10
    • 2018-10-23
    • 2013-07-18
    • 2023-04-04
    相关资源
    最近更新 更多