Как перечислить подкаталоги с пробелами в их именах в bash - PullRequest
0 голосов
/ 29 августа 2018

Я нашел несколько похожих вопросов на этот вопрос, но удивительно, что ни один из них не работает для меня.

У меня есть это написано в сценарии:

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

$ 1 - это родительский каталог, для которого я хочу распечатать список подкаталогов, однако, при его запуске распечатывается, например, каталог с именем «dir with space» в виде 3 слов в отдельных строках.

1 Ответ

0 голосов
/ 29 августа 2018

Вы можете использовать подстановку оболочки вместо подстановки процесса, которая не страдает от проблемы расширения слов:

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

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

Или вы можете прибегнуть к довольно распространенному шаблону find ... -print0 | xargs -0 ....

...