와일드카드 대신 정규식을 기반으로 ls 색상 목록 설정

와일드카드 대신 정규식을 기반으로 ls 색상 목록 설정

LS_COLORS 변수에 색상 일치를 위한 정규식 패턴을 설정할 수 있습니까? 그래서 그냥 대신에

*.jpg=38;5;220

내가 할 수 있을까?

\.(jpg|gif)=38;5;220

이것은 단지 예일 뿐이므로 더 복잡하게 만들고 싶습니다. 내가 이것에 대해 너무 많은 것을 요구하고 있습니까? 터미널 색 구성표를 선호하는 다른 방법이 있습니까?

그런데 저는 zsh를 사용하고 있으므로 거기서 할 수 있지만 bash로는 할 수 없다면 문제가 되지 않습니다.

답변1

이는 ls유틸리티의 기능 입니다.GNU 핵심 도구. 쉘에 의존하지 않습니다. 구문은 문서화되어 있지 않습니다( dircolors여기서 사용하고 알아내야 함). 그러나 소스 코드를 간단히 살펴보면 이름별로 파일을 일치시키는 유일한 방법은 *문자열과 접미사여야 하는 문자열을 사용하는 것임을 알 수 있습니다. 일치시킬 파일 이름. 문자열은 이스케이프 시퀀스(예: == 개행)를 제외 \하고 문자 그대로 해석됩니다 .^\n^J

따라서 동일한 패턴으로 다른 확장을 일치시킬 수 없습니다. 그러나 쉘 프로그래밍 구성을 사용하여 다음을 빌드할 수 있습니다 LS_COLORS.

for ext in jpg gif; do LS_COLORS="$LS_COLORS:*.$ext=38;5;220"; done

관련 정보