와일드카드 연산자를 사용할 때 파일 이름 목록을 프로그램에 전달할 수 없습니다.
본질적으로 문제는 여러 수준의 접미사를 가진 파일이 있고 기본 파일을 더 짧은 접미사와 일치시키고 싶다는 것입니다.
예를 들어 filename.suffix_somedata
일치해야 하지만 filename.suffix_somedata_extrainfo
일치해서는 안 됩니다.
시도해 보았지만 ls filename.suffix_[a-zA-Z0-9]*
예상 ls filename.suffix_[:alnum:]*
대로 작동하지 않습니다.
답변1
*
의 정규식 연산자에 해당하는 것은 ( for ) zsh -o extendedglob
입니다 . 이 옵션과 함께 ksh 스타일 와일드카드를 사용할 수도 있습니다 . 따라서 다음 중 하나를 수행하십시오.#
##
+
kshglob
setopt extendedglob # best in ~/.zshrc
ls -d filename.mainsuff_[[:alnum:]]#
또는:
setopt kshglob
ls -d filename.mainsuff_*([[:alnum:]])(-)
(이것은 (-)
부분적으로 ([[:alnum:]])
전역 한정자로 처리되는 것을 방지하기 위한 것입니다(또는 그렇게 할 수 있습니다 setopt nobareglobqual
)).
답변2
이것은:
ls | cut -d '_' -f1,2