Cela ne fonctionnera pas: ~/xy*~~/xyz*
.
Je sais que $HOME/xy*~$HOME/xyz*
fonctionne, mais j'aimerais savoir s'il existe un moyen d'get le même effet avec les préfixes de path commençant par ~
, comme ~/
ou ~user/
~nameddir/
.
Fondamentalement, vous vous attendez à ce que le shell développe le tilde dans $HOME
au début et quelque part au milieu d'un mot qui ne se produira pas: le 1er ~
sera étendu à $HOME
mais pas aux autres (dans ce cas , du fait de l' extendedglob
deglobgl, ils sont traités comme des opérateurs glob) …
Comme nous l'avons noté, il existe des façons de le faire – même la suggestion de Sundeep est OK parce que zsh
comprend ksh
-like globs (où bash
copiés):
setopt kshglob setopt nobareglobqual print -rl ~/xy?([^z]*)
~
n'est étendue que dans très peu de contexts .
Ici, vous pouvez faire ~/xy^z*
ou ~/xy(*~z*)
.
Vous pouvez effectuer la négation:
~/(xy|xy[^z]*)
ou plus court:
~/xy(|[^z]*)