我有这样的事情:
% ls -1dF /tmp/foo/*
/tmp/foo/000f9e956feab3ee4625aebb65ae7bae9533cdbc/
/tmp/foo/002e34c2218f2c86fefd2876f0e5c2559c5fb3c4/
/tmp/foo/00b483576791bab751e6cb7ee0a7143af43a8069/
.
.
.
/tmp/foo/fedd0f7b545e7ae9600142656756456bc16874d3/
/tmp/foo/ff51ac87609012137cfcb02f36624f81cdc10788/
/tmp/foo/ff8b983a7411395344cad64182cb17e7cdefa55e/
我想bar
在下的每个子目录下创建一个目录foo
。
如果我尝试用
% mkdir -p /tmp/foo/*/bar
...我得到了错误
zsh: no matches found: /tmp/foo/*/bar
(事后看来,我可以理解该错误的原因。)
我知道我可以使用for循环解决原始问题,但是我很想知道是否zsh
支持某种形式的参数扩展,该扩展将为的单次调用生成所需的参数mkdir -p
。IOW,相当于“附加/bar
到扩展产生的每个前缀”的参数扩展/tmp/foo/*
,导致
% mkdir -p /tmp/foo/000f9e956feab3ee4625aebb65ae7bae9533cdbc/bar ... /tmp/foo/ff8b983a7411395344cad64182cb17e7cdefa55e/bar