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

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

외부 스크립트에서 사용하기 위해 현재 디렉터리의 실패 로그 목록을 가져오고 싶습니다. 로그는 파일 이름에 FAIL 패턴으로 결정되므로 FAIL*을 사용하여 스크립트 파일을 열었습니다. 그리고 과정. 그러나 각 FAIL 파일에는 압축된 파일과 압축되지 않은 파일의 두 가지 유형이 있습니다. 압축되지 않은 파일을 열고 싶습니다.

체인 찾기 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그러나 일반적 으로 출력은 구조화되어 있지 않으므로 출력을 구문 분석하지 않는 것이 좋습니다 .

관련 정보