如何在bash中列出名称中带有空格的子目录

Los*_*het 0 bash ubuntu ubuntu-16.04

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

我用脚本编写了这个:

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

$ 1是我希望打印出子目录列表的父目录,但是,运行它打印出来,例如,名为"dir with spaces"的目录在不同的行上作为3个单词.

wei*_*dan 5

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

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

for d in "$1"/*; do
    echo "$d"
done
Run Code Online (Sandbox Code Playgroud)

或者你可以诉诸相当普遍的find ... -print0 | xargs -0 ...模式.