~/xyz*를 제외한 모든 ~/xy*와 일치하는 glob은 무엇입니까?

~/xyz*를 제외한 모든 ~/xy*와 일치하는 glob은 무엇입니까?

이것은 작동하지 않습니다: ~/xy*~~/xyz*.

이것이 작동한다는 것을 알고 있지만 ( 예: 또는 )로 시작하는 경로 접두사를 사용하여 동일한 효과를 얻을 수 $HOME/xy*~$HOME/xyz*있는 방법이 있는지 궁금합니다 .~~/~user/~nameddir/

답변1

~드문 경우에만 확장됩니다..

~/xy^z*여기에서 또는 를 실행할 수 있습니다 ~/xy(*~z*).

답변2

기본적으로 쉘이 물결표를 $HOME단어의 시작 부분과 중간 어딘가로 확장할 것으로 예상하지만 그런 일은 일어나지 않습니다. 첫 번째 것은 ~확장되지만 $HOME다른 것들은 확장되지 않습니다(이 경우 extendedglob설정으로 인해). 전역 연산자로 취급됨)...
위에서 언급했듯이 이를 수행하는 방법은 여러 가지가 있습니다.산딥zshUnderstanding ksh-like globs( bash복사되는 위치) 로 인해 제안은 괜찮습니다 .

setopt kshglob
setopt nobareglobqual
print -rl ~/xy?([^z]*)

답변3

부정을 수행할 수 있습니다.

~/(xy|xy[^z]*)

또는 더 짧게:

~/xy(|[^z]*)

관련 정보