여러 하위 디렉터리에서 값 발생 횟수 계산

여러 하위 디렉터리에서 값 발생 횟수 계산

아래 디렉토리 구조를 계산하기 위해 다음 스크립트를 어떻게 작성할 수 있습니까?

dir1/diskname 
dir2/diskname
dir3/diskname
dir4/diskname

diskname에는 다음 값이 포함됩니다.

hitachi
samsung
LG

디스크 이름의 각 디렉터리를 검색하고 값을 계산하는 스크립트를 원합니다.

예를 들어, dir1,2,4의 파일이 hitachi이고 3이 samsung인 경우 결과는 다음과 같습니다.

hitachi 3
samsung 1 

답변1

Panki가 제안한대로댓글에서:

cat dir*/diskname | sort | uniq -c

그러면 .dll을 사용하여 diskname모든 파일이 하나의 스트림으로 연결 됩니다 cat. 이 sort유틸리티는 데이터를 정렬하고 uniq -c각 행의 연속 발생 횟수를 계산합니다.

일반적으로 다음이 있을 때수천filename 을 사용하면 파일 이름 글로빙 패턴이 너무 많은 경로 이름으로 확장되므로 "인수 목록이 너무 김" 오류와 함께 diskname명령 cat이 실패합니다 . dir*/diskname이 경우 모든 파일을 반복하도록 선택할 수 있습니다.

for name in dir*/diskname
do
    cat "$name"
done | sort | uniq -c

또는 다음을 사용할 수 있습니다 find(현재 디렉터리가 dir*모든 디렉터리를 찾을 수 있는 위치라고 가정).

find . -maxdepth 2 -path './dir*/diskname' -type f -exec cat {} + | sort | uniq -c

관련 정보