首页 > 解决方案 > 如何在bash中列出名称中带有空格的子目录

问题描述

我发现了一些与此类似的问题,但令人惊讶的是,它们都不适合我。

我在脚本中写了这个:

for d in $(ls -d "$1"); do echo $d done

$1 是我希望打印出子目录列表的父目录,但是,运行它会打印出例如名为“带空格的目录”的目录,在单独的行上以 3 个单词的形式出现。

标签: bashubuntuubuntu-16.04

解决方案


您可以使用 shell globbing 而不是进程替换,这不会受到单词扩展问题的影响:

# to include dotfiles and not iterate empty directory
shopt -s dotglob nullglob

for d in "$1"/*; do
    echo "$d"
done

或者你可以诉诸非常常见的find ... -print0 | xargs -0 ...模式。


推荐阅读