/의 하위 항목에 있는 홈 디렉토리 수

/의 하위 항목에 있는 홈 디렉토리 수

나는 하나 이상의 홈 디렉토리를 포함하는 / 하위 디렉토리의 수를 세어야 합니다. 예를 들어, john, emily 및 rick의 홈 디렉터리가 /home/john, /home/emily 및 /var/lib에 있는 경우 대답은 2입니다.

Cut과 Grep을 사용하여 파이프를 사용해야 할 것 같은데 정확히 어떻게 사용하는지 모르겠습니다.

답변1

(export LC_ALL=C
getent passwd | cut -d: -f6 | sort -t/ -uk2,2 | grep -c ..)

사용자 홈 디렉터리의 고유한 두 번째 구성 요소 수를 계산합니다.

  • LC_ALL=Cuniq일반적으로 우리가 사용할 때 필요합니다.sort -u
  • getent passwd계정 데이터베이스를 csv(콜론으로 구분)로 반환합니다(열거가 가능하다고 가정하지만 네트워크 데이터베이스의 경우 항상 그런 것은 아닙니다).
  • cut -d: -f6각 레코드의 6번째 필드 추출(기본 디렉터리)
  • sort -t/ -uk2,2두 번째 디렉터리 구성 요소를 정렬하고 -u각 고유 정렬 키에 대해 하나의 레코드만 유지합니다.
  • grep -c ..제외할 문자가 두 개 이상 포함된 줄 수를 계산합니다 /(또는 grep -cvx /:)

+ + 단일 호출 로 cut대체 가능 :sortgrepawk

getent passwd | awk -F: '{split($6, p, "/")}
                         p[2] != "" && !seen[p[2]]++ {n++}
                         END {print n}'

관련 정보