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

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

예를 들어, 4번째와 5번째 문자만 포함하고 단일 일치 항목이 한 번만 반복되는 파일 이름만 나열하려고 합니다( 위 예 mk에서 ).cd

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

답변1

각 작업을 위한 도구와 이를 하나로 묶는 셸이라는 Unix 철학을 적용하세요. 총 3가지 포지션이 있습니다.

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

    printf '%s\n' *.ext
    

    한 줄에 하나의 이름을 나열하십시오.

  • 관심 있는 파일 이름 부분을 추출합니다. 네 번째와 다섯 번째 문자를 추출하려면 cut -b 4,5(싱글바이트 문자의 경우) 또는 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

관련 정보