패턴과 일치하지 않는 파일을 나열 하시겠습니까?
bash에서 패턴과 일치하는 모든 파일을 나열하는 방법은 다음과 같습니다.
ls *.jar
패턴의 보완을 나열하는 방법은 무엇입니까? 즉 * .jar와 일치하지 않는 모든 파일?
ls | grep -v '\.jar$'
예를 들어.
egrep 스타일의 확장 패턴 일치를 사용하십시오.
ls !(*.jar)
bash-2.02-alpha1부터 사용할 수 있습니다. 먼저 활성화해야합니다.
shopt -s extglob
bash-4.1-alpha에는 기본적으로 활성화하는 구성 옵션이 있습니다.
거의 알려지지 않은 bash 확장 규칙 :
ls !(*.jar)
POSIX는 일치하지 않는 대괄호 표현식을 정의하므로 쉘이 파일 이름을 확장하도록 할 수 있습니다.
ls *[!j][!a][!r]
이것은 몇 가지 단점이 있지만 적어도 모든 유닉스 쉘과 호환됩니다.
의 적절한 버전을 사용하면 find
다음과 같이 할 수 있지만 약간 과잉입니다.
find . -maxdepth 1 ! -name '*.jar'
find
파일을 찾습니다. .
인수를 지정 당신은에서 검색을 시작하려는 .
현재 디렉토리를 즉. -maxdepth 1
한 수준 깊이, 즉 현재 디렉터리 만 검색하도록합니다. regex와 일치 하지 않는! -name '*.jar'
모든 파일을 찾습니다 .*.jar
내가 말했듯이이 응용 프로그램에는 약간 과잉이지만을 제거하면 -maxdepth 1
jar 파일이 아닌 모든 파일이나 쉽게 사용할 수있는 파일을 재귀 적으로 검색 할 수 있습니다.
한 가지 해결책은 ls -1|grep -v '\.jar$'
하나 이상의 파일 확장자를 제외 할 경우에, 파이프로 구분 |
처럼 ls test/!(*.jar|*.bar)
. 해 보자:
$ mkdir test
$ touch test/1.jar test/1.bar test/1.foo
$ ls test/!(*.jar|*.bar)
test/1.foo
shopt -s extglob
먼저 필요한 다른 답변을 살펴보십시오 .
귀하의 경우 ls
지원이 ( man ls
) 사용 --hide=<PATTERN>
옵션을 선택합니다. 귀하의 경우 :
$> ls --hide=*.jar
ls
(매우 나쁘기 때문에) 의 출력을 구문 분석 할 필요가 없으며 여러 유형의 파일을 표시하지 않도록 확장됩니다. 어느 시점에서 나는 어떤 비 소스, 비 객체, 비 libtool 생성 파일이 (정돈 된) 디렉토리에 있는지 확인해야했습니다.
$> ls src --hide=*.{lo,c,h,o}
매력처럼 작동했습니다.
또 다른 방법은 ls -I
플래그 (Ignore-pattern)를 사용하는 것입니다.
ls -I '*.jar'
참조 URL : https://stackoverflow.com/questions/8525437/list-files-not-matching-a-pattern
'program tip' 카테고리의 다른 글
jquery : id에 특정 패턴이있는 요소 찾기 (0) | 2021.01.09 |
---|---|
실제 TCP 및 UDP의 예는 무엇입니까? (0) | 2021.01.09 |
Android 자료 : 상태 표시 줄 색상이 변경되지 않습니다. (0) | 2021.01.09 |
Spring Boot에서 @Repository 주석이 달린 인터페이스를 Autowire 할 수 없습니다. (0) | 2021.01.09 |
모든 문자열에서 마지막 세 문자 가져 오기-Java (0) | 2021.01.09 |