
$ ls
abcmkde
ghemkde
vdecdde
예를 들어, 단일 일치 항목이 한 번만 반복되어( 위의 예에서) mk
4 번째와 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
, 또는 :bash
zsh
mksh
for file in *; do
printf '%s\n' "${file:3:2}"
done | sort -u