zsh 扩展了通配符来创建子目录

zsh 扩展了通配符来创建子目录
% zsh --version
zsh 5.0.2 (x86_64-apple-darwin13.0)

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

我正在尝试在当前文件夹的所有目录中创建一个名为“files”的子目录。我想使用 zsh 通配功能。

% setopt extendedglob

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

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

答案1

通配符是为了模式匹配不是为了模式生成:它仅返回与模式匹配的现有文件的列表,而不是可以匹配模式的每个名称的列表。

*/files只是意味着“任何现存的当前工作目录中的任何目录中名为‘文件’的实体”。

使用 globbing/限定符获取当前工作目录中的目录列表(仅限目录):

ls -ld *(/)

为了在每个子目录中创建“文件”子目录,您可以使用循环for

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

相关内容