1

У меня есть очень специфическое дерево каталогов в моей музыкальной библиотеке. Я хотел бы сосчитать все альбомы, исключая все подкаталоги.

Например, учитывая это дерево каталогов:

/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" альбомов.

(И удвоить бонусные баллы, если он дополнительно перечисляет переводы и альбомы.)

Как мне легче всего это сделать?

3 ответа3

0

Чтобы увидеть четыре альбома:

$ 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 , тогда поместите / перед music во всех вышеперечисленных командах. В противном случае поставьте перед собой любой путь, который достигнет music .

0

Вы можете использовать find чтобы перечислить все подкаталоги. Затем просто посчитайте количество слешей в строке и сообщите, как часто их было 3:

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

Используйте ^//$ чтобы получить количество интерпретаций.

0

Я думаю, что вы ищете немного «найти» магию. Бег

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

должен дать вам количество альбомов в вашей коллекции. Бег

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

должен вернуть количество художников.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .