Tôi có một cái gì đó như thế này:
% ls -1dF /tmp/foo/*
/tmp/foo/000f9e956feab3ee4625aebb65ae7bae9533cdbc/
/tmp/foo/002e34c2218f2c86fefd2876f0e5c2559c5fb3c4/
/tmp/foo/00b483576791bab751e6cb7ee0a7143af43a8069/
.
.
.
/tmp/foo/fedd0f7b545e7ae9600142656756456bc16874d3/
/tmp/foo/ff51ac87609012137cfcb02f36624f81cdc10788/
/tmp/foo/ff8b983a7411395344cad64182cb17e7cdefa55e/
Tôi muốn tạo một thư bar
mục theo từng thư mục con bên dưới foo
.
Nếu tôi cố gắng làm điều này với
% mkdir -p /tmp/foo/*/bar
... Tôi nhận được lỗi
zsh: no matches found: /tmp/foo/*/bar
(Nhìn nhận lại, tôi có thể hiểu lý do của lỗi.)
Tôi biết rằng tôi có thể giải quyết vấn đề ban đầu bằng một vòng lặp for, nhưng tôi tò mò muốn biết liệu có zsh
hỗ trợ một số dạng mở rộng tham số sẽ tạo ra đối số mong muốn cho một lần gọi hay không mkdir -p
. IOW, một mở rộng tham số tương đương với "nối /bar
vào mọi tiền tố được tạo bằng cách mở rộng /tmp/foo/*
", dẫn đến
% mkdir -p /tmp/foo/000f9e956feab3ee4625aebb65ae7bae9533cdbc/bar ... /tmp/foo/ff8b983a7411395344cad64182cb17e7cdefa55e/bar