Назад | Перейти на главную страницу

zsh расширенная глобализация для создания подкаталогов

% zsh --version
zsh 5.0.2 (x86_64-apple-darwin13.0)

% ls -l 
bootstrap/    local_folder/ ssh_confs/    zsh_confs/

Я пытаюсь создать подкаталог с именем "files" во всех каталогах в моей текущей папке .. Я хочу использовать функции zsh globbing ..

% setopt extendedglob

% mkdir -pv */files   
zsh: no matches found: */files

% mkdir -pv **/files
zsh: no matches found: **/files

Globbing предназначен для сопоставление с образцом не для генерация паттернов: Он возвращает только список существующих файлов, которые соответствуют шаблону, а не список всех имен, которые могут соответствовать шаблону.

*/files просто означает "любой существующий сущность с именем 'files' в любом каталоге в текущем рабочем каталоге ".

Вы жестяная банка используйте globbing для получения списка каталогов (и только каталогов) в текущем рабочем каталоге с помощью / * квалификатор подстановки:

ls -ld *(/)

Чтобы создать подкаталог files в каждом из них, вы можете использовать for-петля:

for directory in *(/); do mkdir "$directory/files"; done