Перебрать каталог с пробелом в имени

Предполагая, что вы используете bash, вы можете легко сделать это с помощью косвенной ссылки:

$ foo=bar
$ bar=magicword
$ printf "%s\n" "${!foo}"
magicword

Синтаксис$var(или${var})дает содержимое переменной var.

Синтаксис ${!var}дает содержимое переменной , названной вvar.

1
25.07.2020, 15:57
1 ответ

Это одна из основных причин, по которой вам никогда не следует пытаться анализировать выводls. Если вы просто используете оболочки, вы можете сделать:

for dir in /dir1/dir2/TopLevel/*/
do
    echo "$dir" ## note the quotes, those are essential
done

Комментарии

  • Обратите внимание, как я использую for dir in /dir1/dir2/TopLevel/*/, а не только for dir in /dir1/dir2/TopLevel/*. Это только для перебора каталогов. Если вам нужны и каталоги, и файлы, используйте for f in /dir1/dir2/TopLevel/*.

  • Кавычки вокруг $dirнеобходимы, вы всегда должны заключать в кавычки переменные, особенно если они содержат пробелы.

Дополнительная литература:

2
18.03.2021, 23:20

Теги

Похожие вопросы