*.d
расширяется до файлов, имена которых заканчиваются на .d
.
С помощью zsh
можно сделать:
files=(*)
mkdir -- $^files.d
Или с анонимной функцией:
() { mkdir -- $^argv.d; } *
Или добавление суффикса через квалификатор e
glob:
mkdir -- *(e{REPLY+=.d})
Или модификатор истории :s
, примененный к глобусам (с histsubstpattern
для %
, означающим конец):
set -o histsubstpattern
mkdir -- *(:s/%/.d)
Вы также можете не делать этого для файлов, которые уже являются каталогами или символическими ссылками на каталоги, добавив квалификатор ^-/
glob:
files=(*(^-/))
mkdir -- $^files.d
(обратите внимание, что zsh
не имеет такой неправильной функции, как другие Bourne -, такие как оболочки, в которых шаблоны, которые не совпадают, передаются как -, поэтому mkdir *.d
не будет создавать каталог *.d
, если в текущем каталоге не было файла, соответствующего *.d
, вместо этого команда прервалась бы с ошибкой)