% 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