파일 이름의 4번째와 5번째 문자를 찾는 방법은 무엇입니까?

파일 이름의 4번째와 5번째 문자를 찾는 방법은 무엇입니까?
$ ls
abcmkde
ghemkde
vdecdde

예를 들어, 단일 일치 항목이 한 번만 반복되어( 위의 예에서) mk4 번째와 5번째 문자만 포함된 파일 이름을 나열하고 싶습니다 .cd

이름이 다르고 네 번째와 다섯 번째 문자가 다른 파일이 많이 있습니다.

답변1

Unix 철학을 적용하십시오. 즉, 각 작업에 하나의 도구를 사용하고 이를 함께 결합하는 셸입니다. 세 가지 직업이 있습니다:

  • 파일 이름을 나열하십시오. 파일 이름에 인쇄할 수 없는 문자나 제어 문자가 포함되어 있지 않은 한 이는 출력을 구문 분석하는 것이 ls합당한 경우입니다 . 특정 파일만 나열하려면 다음과 같은 것을 사용할 수 있습니다.

    printf '%s\n' *.ext
    

    한 줄에 하나의 이름을 나열합니다.

  • 관심 있는 파일 이름 부분을 추출합니다. 4번째 및 5번째 문자를 추출하려면 cut -b 4,5(1바이트 문자의 경우) 또는 cut -c 4,5(멀티바이트 문자 허용)을 사용할 수 있습니다.

  • 중복된 항목을 제거하세요. 이를 수행하는 가장 간단한 방법은 sort -u(이것은 또한 부품을 정렬하는 것입니다)입니다.

파이프프로그램에 함께 참여하세요. 결과는

ls | cut -b 4,5 | sort -u

답변2

ksh93, 또는 :bashzshmksh

for file in *; do
    printf '%s\n' "${file:3:2}"
done | sort -u

관련 정보