ls를 사용하여 여러 패턴 일치

ls를 사용하여 여러 패턴 일치

파일 이름의 FAIL 패턴에 따라 결정되는 외부 스크립트에서 사용하기 위해 현재 디렉터리에서 실패한 로그 목록을 가져오고 싶기 때문에 FAIL*을 사용하여 스크립트 파일과 열 절차를 제공했습니다. 그러나 모든 FAIL 파일은 압축된 파일과 압축되지 않은 파일의 두 가지 유형으로 제공됩니다. 압축되지 않은 파일만 열고 싶습니다.

find FAIL*을 연결할 수 있지만 *.gz/bz2/whatever가 존재하는 경우에는 연결할 수 없습니까?

답변1

다음 확장자를 사용하여 정규식이 있는지 테스트할 수 있습니다.

for file in *FAIL*; do [[ ! $file =~ .(bz2|gz) ]] && printf "%s\n" "$file"; done

필수 경고 삽입파싱되지 않음ls...

답변2

명령 을 사용하는 경우 다음과 같이 find확장자로 끝나는 파일을 생략할 수 있습니다 .gz.

$ ls -l
total 0
-rw-rw-r--. 1 saml saml 0 Oct 15 22:42 FAIL
-rw-rw-r--. 1 saml saml 0 Oct 15 22:42 FAIL.gz

$ find . -name "*FAIL*" ! -name "*.gz"
./FAIL

ls다음과 같이 출력을 필터링 할 수도 있습니다 .

$ ls *FAIL* | grep -v '.gz'
FAIL

ls그러나 일반적으로 출력의 구조가 출력을 구문 분석하는 데 도움이 되지 않으므로 출력을 구문 분석하지 않는 것이 좋습니다 .

관련 정보