У меня есть папка Music, и содержимое выглядит так:
Music -ArtistA -Song1.mp3 -AlbumA -Song2.mp3 -Song2.m4a -AlbumB -Song1.mp3 -Song2.mp3 -Song3.mp3 -AlbumC -Song1.mp3 -Song1.jpg -SomeFolder1 -Song1.mp3 -ArtistB -Song1.mp3 -ArtistC -Song1.mp3 -Song2.mp3 -Song3.mp3 -SomeFolder2 -Song1.jpg -Song2.jpg -SomeFolder3
Я ищу вывод, как это:
ArtistA/Song1.mp3 ArtistA/AlbumA/Song2.mp3 ArtistA/AlbumC/Song1.mp3 ArtistA/AlbumC/SomeFolder1/Song1.mp3 ArtistB/Song1.mp3
Итак, я не хочу каталоги с одним файлом, я хочу каталоги только с одним mp3 - независимо от подкаталогов или других файлов. Я также не хочу пустых каталогов или каталогов, которые содержат более одного mp3.
Я не против сценария оболочки для Linux. Однако я не хочу компилировать программу ни на одной из ОС.
Я пытался find . -type d -exec sh -c 'set -- "$0"/*.mp3; [ $# -le 1 ]' {} \; -print
но это дает мне такой вывод:
. ./ArtistB ./ArtistA ./ArtistA/AlbumA ./ArtistA/AlbumC ./ArtistA/AlbumC/SomeFolder1 ./ArtistC/SomeFolder2 ./ArtistC/SomeFolder3
что близко, но не совсем то, что я хочу. Есть две пустые папки и без имен файлов.