와일드카드에 대해 배우고 있어요. 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 extglob
Bash에서는 필수입니다.)