$ 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
, 또는 :bash
zsh
mksh
for file in *; do
printf '%s\n' "${file:3:2}"
done | sort -u