Linux 터미널을 사용하여 특정 폴더 수준의 폴더 수를 어떻게 계산할 수 있나요?

Linux 터미널을 사용하여 특정 폴더 수준의 폴더 수를 어떻게 계산할 수 있나요?

내 음악 라이브러리에는 매우 구체적인 디렉토리 트리가 있습니다. 모든 하위 디렉터리를 제외한 모든 앨범을 계산하고 싶습니다.

예를 들어 다음과 같은 디렉터리 트리가 있다고 가정해 보겠습니다.

/music/
/music/Davis, Miles/                           
/music/Davis, Miles/Kind of Blue/                
/music/Davis, Miles/Tutu/                    
/music/Hendrix, Jimi/                              
/music/Hendrix, Jimi/Axis Bold As Love/               
/music/Hendrix, Jimi/Electric Ladyland/              
/music/Hendrix, Jimi/Electric Ladyland/Disk 1   
/music/Hendrix, Jimi/Electric Ladyland/Disk 2

"4" 를 반환하는 명령을 원합니다.

따라서 기본적으로 나는 명령이 앨범 수를 반환하거나 "2" 해석 및 "4" 앨범을 반환하는 경우 보너스 포인트를 반환하기를 원합니다.

(통역 및 앨범이 추가로 나열되면 보너스 포인트가 두 배로 늘어납니다.)

이 작업을 가장 쉽게 수행할 수 있는 방법은 무엇입니까?

답변1

4개의 앨범을 보려면 다음 단계를 따르세요.

$ ls -d1 music/*/*/
music/Davis, Miles/Kind of Blue/
music/Davis, Miles/Tutu/
music/Hendrix, Jimi/Axis Bold As Love/
music/Hendrix, Jimi/Electric Ladyland/

개수를 계산하려면 다음 단계를 따르세요.

$ printf "%q\n" music/*/*/ | wc -l
4

%q여기서는 줄 바꿈이 포함된 앨범 이름이 두 번 이상 계산되는 것을 방지하기 위해 형식이 사용됩니다 .

아티스트를 보려면:

$ ls -d1 music/*/
music/Davis, Miles/
music/Hendrix, Jimi/

아티스트 수를 계산하려면 다음을 수행하세요.

$ printf "%q\n" music/*/ | wc -l
2

위의 명령은 music현재 디렉터리에 있다고 가정합니다. 디렉토리 music가 실제로 이면 위의 모든 명령 앞에 /music를 넣으십시오 . 그렇지 않으면 도달할 경로를 앞에 두십시오 ./musicmusic

답변2

find모든 하위 디렉터리를 나열하는 데 사용할 수 있습니다 . 그런 다음 줄당 슬래시 수를 세고 그 중 3개가 얼마나 자주 있었는지 보고하십시오.

find -type d | sed s%[^/]%%g | grep -c ^///$

^//$해석 횟수를 가져오는 데 사용합니다 .

답변3

내 생각엔 당신이 약간의 '찾기' 마법을 찾고 있는 것 같아요. 달리기

find /music -mindepth 2 -maxdepth 2 -type d | wc -l

컬렉션에 있는 앨범 수를 알려줘야 합니다. 달리기

find /music -mindepth 1 -maxdepth 1 -type d | wc -l

아티스트 수를 반환해야 합니다.

관련 정보