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