작동 방식 ls *[^0-9]* [중복]

작동 방식 ls *[^0-9]* [중복]

와일드카드에 대해 배우고 있어요. ls *[0-9]*이름에 숫자가 있는 모든 파일/디렉터리가 나열되어 있으므로 ls *[^0-9]*이름 중간에 숫자가 없는 모든 파일/디렉터리가 나열되어서는 안 됩니까? 명령으로 나열된 일부 파일에 번호가 있는 것을 확인했습니다.

file1.txt그리고 file1~상장된 적도 있습니다.

답변1

[0-9]모든 숫자와 일치하므로 *[0-9]*하나 이상의 숫자를 포함하는 모든 문자열입니다.

[^0-9]숫자가 아닌 문자와 일치하므로 *[^0-9]*숫자가 아닌 문자가 하나 이상 포함된 모든 문자열과 일치합니다.

file1.txt숫자와 숫자가 아닌 것이 모두 있으므로 두 패턴 모두 일치합니다.


일반 파일 이름 패턴과 마찬가지로 단일 패턴을 사용하여 특정 문자를 포함하지 않는 문자열을 일치시킬 수 있는 방법은 없습니다.

반면에 정규식을 사용하면 Bash 또는 ksh의 확장 glob ^[^0-9]+$처럼 숫자가 아닌 숫자로만 구성된 문자열과 일치합니다 . +([^0-9])( shopt -s extglobBash에서는 필수입니다.)

관련 정보