기본 파일 이름이 같은 파일이 여러 개 있습니다. 하나를 제외한 모든 것을 제거하고 싶습니다
foo.org #keep
foo.tex #delete
foo.fls #delete
foo.bib #delete
etc
보관할 필요가 없으면 사용할 수 있음을 알고 있습니다 rm foo.*
.
TLDP^
는 경기를 부정하는 것을 보여줍니다 . 시행 착오를 통해 나는 그것을 찾을 수 있었다
rm foo.*[^org]
필요한 것을 수행하지만 구문을 실제로 이해하지 못합니다.
또한 내 유스 케이스에는 제한이 없지만이 패턴도 foo.o
및 을 무시한다고 생각합니다 foo.or
. 어떻게, 그리고 어떤 글로브이 패턴 작업 무시 것이다 않는 유일한 foo.org
모습?
을 사용하고
—
Mr. Mascaro
Regular Expression
있습니다. 그룹화 문자에주의해야합니다. 괄호를 사용하여 당신은 당신이 문자로 확장 한 모든 파일을 삭제 할 문자 클래스의 의미 지정한 o
, r
또는 g
임의의 순서로합니다. 괄호를 사용하여 그룹을 작성하고 문자 순서를 유지하십시오.
@ jbarker2160-그것은 실제로 정규 표현식이 아니며, 더 일반적으로 정규 표현식의 하위 집합 인 glob (또는 filename pattern ) 이라고합니다 . 자세한 내용은 bash 맨 페이지의 패턴 일치 섹션을 참조하십시오 그의 패턴
—
Johnny
foo.*[^org]
은 foo.
마지막 문자가 o, r 또는 g가 아닌 점 다음에 하나 이상의 문자로 시작하는 모든 파일 이름과 일치합니다 . 그래서 일치합니다 foo.orb
,하지만 foo.org
나 foo.or
또는 foo.o
. GlennJackman의 답변은 확장 패턴 일치 기능을 활성화하여 일치를 무효화하는 방법을 보여줍니다.
rm foo.*[^org]
모든 파일을 제거 마지막 도 문자가o
,r
또는g
, 그래서foo.foo
중 하나와 일치하지 않을 것입니다.