[Solved] [bash] Sortowanie plików mp3

Bash, C, C++, Java, PHP, Ruby, GTK, Qt i wiele innych - wszystko tutaj.
teomos
Piegowaty Guziec
Piegowaty Guziec
Posty: 6
Rejestracja: 15 wrz 2008, 21:53
Płeć: Mężczyzna
Wersja Ubuntu: 8.04
Środowisko graficzne: GNOME
Kontakt:

[Solved] [bash] Sortowanie plików mp3

Post autor: teomos »

Witam,

Moja kolekcja muzyki uporządkowana jest w sposób /artysta/album/pliki.mp3 . Jednak ostatnio w folderach albumów oprócz plików mp3 nagromadzily się różne pliki konfiguracyjne, które nie są mi potrzebne. Czy da się napisać skrypt w bashu kopiujący te pliki mp3 w jakieś inne miejsce zostawiając pozostałe(konfiguracyjne, pliki okładek itp.), przy zachowaniu struktury (artysta/album/pliki.mp3). Chce po prostu przeczyścić moją kolekcję i chyba to będzie najlepszy sposób.

Proszę o pomoc.
Pozdrawiam
Ostatnio zmieniony 16 cze 2011, 16:00 przez teomos, łącznie zmieniany 1 raz.
sir_herrbatka
Zakręcona Traszka
Zakręcona Traszka
Posty: 587
Rejestracja: 10 maja 2009, 14:44
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: KDE Plasma
Architektura: x86

Re: [bash] Sortowanie plików mp3

Post autor: sir_herrbatka »

ja to po prostu usuwałem za pomocą find -name -exec rm -f '{}' +

Na twoim miejscu skopiowałbym całość do innego punktu, a później usuną w powyższy sposób wszystkie pliki mp3 flac ogg itp. w jednej kopii, a w drugiej wszystkie śmieciowe pliki zachowując muzykę.

Ale to metoda "do okoła". Nie wiem jak to zrobić w linii prostej. Trzeba przeczytać man mv

PS
Ale do tego nie mam cierpliwości; zwłaszcza, że może to nie jest rozwiązanie ;-)
Awatar użytkownika
ilu2112
Sędziwy Jeż
Sędziwy Jeż
Posty: 35
Rejestracja: 28 lut 2009, 20:31
Płeć: Mężczyzna
Wersja Ubuntu: 12.04
Środowisko graficzne: GNOME
Architektura: x86
Lokalizacja: Łódź
Kontakt:

Re: [bash] Sortowanie plików mp3

Post autor: ilu2112 »

Rozwinę nieco myśl kolegi i podrzucę Ci gotowe rozwiązanie :)

Kod: Zaznacz cały

marcin@marcin-laptop:~/Pulpit$ tree muzyka
muzyka
├── a
│   ├── a.mp3
│   ├── b
│   │   ├── a.mp3
│   │   └── smieci
│   ├── moje_mp3smieci
│   └── smieci
└── a.mp3

2 directories, 6 files
marcin@marcin-laptop:~/Pulpit$ cp -r muzyka backup
marcin@marcin-laptop:~/Pulpit$ tree backup
backup
└── muzyka
    ├── a
    │   ├── a.mp3
    │   ├── b
    │   │   ├── a.mp3
    │   │   └── smieci
    │   ├── moje_mp3smieci
    │   └── smieci
    └── a.mp3

3 directories, 6 files
marcin@marcin-laptop:~/Pulpit$ find muzyka/ -type f | grep -v 'mp3$' | xargs rm
marcin@marcin-laptop:~/Pulpit$ tree muzyka/
muzyka/
├── a
│   ├── a.mp3
│   └── b
│       └── a.mp3
└── a.mp3

2 directories, 3 files
marcin@marcin-laptop:~/Pulpit$ find backup/ -type f | grep 'mp3$' | xargs rm
marcin@marcin-laptop:~/Pulpit$ tree backup
backup
└── muzyka
    └── a
        ├── b
        │   └── smieci
        ├── moje_mp3smieci
        └── smieci

3 directories, 3 files
I teraz wyjaśnienia:
  • cp -r muzyka backup - kopiuje całą zawartość katalogu muzyka/ do katalogu backup/. Jak widać na listingu polecenia tree - sam katalog muzyka został także przekopiowany.
  • find muzyka/ -type f | grep -v 'mp3$' | xargs rm - znajduję w katalogu muzyka/ wszystkie pliki, które nie kończą się na mp3 i je kasuję.
  • find backup/ -type f | grep 'mp3$' | xargs rm - znajduję w katalogu backup/ wszystkie pliki, które kończą się na mp3 i je kasuję.
Proponuję Ci, abyś na początku postarał się to zrobić jak ja - na prostej strukturze katalogów, żebyś sam miał pewność, że to zadziała i nie stracisz kolekcji. Ewentualnie najpierw zrób sobie backup zbioru mp3 ;)
sir_herrbatka
Zakręcona Traszka
Zakręcona Traszka
Posty: 587
Rejestracja: 10 maja 2009, 14:44
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: KDE Plasma
Architektura: x86

Re: [bash] Sortowanie plików mp3

Post autor: sir_herrbatka »

jedna, drobna uwaga: uważaj by nie posłać do diabła swoich plików ogg, mp4 i innych. mp3 to taka artystyczna przenośnia ;-)
teomos
Piegowaty Guziec
Piegowaty Guziec
Posty: 6
Rejestracja: 15 wrz 2008, 21:53
Płeć: Mężczyzna
Wersja Ubuntu: 8.04
Środowisko graficzne: GNOME
Kontakt:

Re: [bash] Sortowanie plików mp3

Post autor: teomos »

Więc próbuje rozwiązać ten problem korzystając z porady @ilu2112 ale mam pewien problem.
Otóż po wykonaniu polecenia:

Kod: Zaznacz cały

find Muzik/ -type f | grep -v 'mp3$' | xargs rm
otrzymuje coś takiego:

Kod: Zaznacz cały

rm: nie można usunąć `Patience': Nie ma takiego pliku ani katalogu
rm: nie można usunąć `&': Nie ma takiego pliku ani katalogu
rm: nie można usunąć `Grace/desktop.ini': Nie ma takiego pliku ani katalogu
rm: nie można usunąć `Muzika/Foo': Nie ma takiego pliku ani katalogu
rm: nie można usunąć `Fighters/Echoes,': Nie ma takiego pliku ani katalogu
rm: nie można usunąć `Silence,': Nie ma takiego pliku ani katalogu
rm: nie można usunąć `Patience': Nie ma takiego pliku ani katalogu
rm: nie można usunąć `&': Nie ma takiego pliku ani katalogu
rm: nie można usunąć `Grace/AlbumArt_{8B712305-3A81-4B52-B9D9-40370A068DDE}_Large.jpg': Nie ma takiego pliku ani katalogu
rm: nie można usunąć `Muzika/Foo': Nie ma takiego pliku ani katalogu
rm: nie można usunąć `Fighters/Echoes,': Nie ma takiego pliku ani katalogu
rm: nie można usunąć `Silence,': Nie ma takiego pliku ani katalogu
rm: nie można usunąć `Patience': Nie ma takiego pliku ani katalogu
rm: nie można usunąć `&': Nie ma takiego pliku ani katalogu
rm: nie można usunąć `Grace/AlbumArtSmall.jpg': Nie ma takiego pliku ani katalogu
rm: nie można usunąć `Muzika/Foo': Nie ma takiego pliku ani katalogu
rm: nie można usunąć `Fighters/Echoes,': Nie ma takiego pliku ani katalogu
rm: nie można usunąć `Silence,': Nie ma takiego pliku ani katalogu
rm: nie można usunąć `Patience': Nie ma takiego pliku ani katalogu
rm: nie można usunąć `&': Nie ma takiego pliku ani katalogu
rm: nie można usunąć `Grace/AlbumArt_{8B712305-3A81-4B52-B9D9-40370A068DDE}_Small.jpg': Nie ma takiego pliku ani katalogu
rm: nie można usunąć `Muzika/Foo': Nie ma takiego pliku ani katalogu
rm: nie można usunąć `Fighters/Echoes,': Nie ma takiego pliku ani katalogu
rm: nie można usunąć `Silence,': Nie ma takiego pliku ani katalogu
rm: nie można usunąć `Patience': Nie ma takiego pliku ani katalogu
rm: nie można usunąć `&': Nie ma takiego pliku ani katalogu
rm: nie można usunąć `Grace/cover.jpg': Nie ma takiego pliku ani katalogu
rm: nie można usunąć `Muzika/Foo': Nie ma takiego pliku ani katalogu
rm: nie można usunąć `Fighters/Echoes,': Nie ma takiego pliku ani katalogu
rm: nie można usunąć `Silence,': Nie ma takiego pliku ani katalogu
rm: nie można usunąć `Patience': Nie ma takiego pliku ani katalogu
rm: nie można usunąć `&': Nie ma takiego pliku ani katalogu
rm: nie można usunąć `Grace/Folder.jpg': Nie ma takiego pliku ani katalogu
rm: nie można usunąć `Muzika/Foo': Nie ma takiego pliku ani katalogu
rm: nie można usunąć `Fighters/In': Nie ma takiego pliku ani katalogu
rm: nie można usunąć `Honor': Nie ma takiego pliku ani katalogu
rm: nie można usunąć `(disc': Nie ma takiego pliku ani katalogu
rm: nie można usunąć `1)/Folder.jpg': Nie ma takiego pliku ani katalogu
rm: nie można usunąć `Muzika/Foo': Nie ma takiego pliku ani katalogu
rm: nie można usunąć `Fighters/One': Nie ma takiego pliku ani katalogu
rm: nie można usunąć `by': Nie ma takiego pliku ani katalogu
rm: nie można usunąć `One/AlbumArt_{0D72E68B-DD40-40ED-832A-42988B92C31A}_Small.jpg': Nie ma takiego pliku ani katalogu
rm: nie można usunąć `Muzika/Foo': Nie ma takiego pliku ani katalogu
rm: nie można usunąć `Fighters/One': Nie ma takiego pliku ani katalogu
rm: nie można usunąć `by': Nie ma takiego pliku ani katalogu
rm: nie można usunąć `One/desktop.ini': Nie ma takiego pliku ani katalogu
rm: nie można usunąć `Muzika/Foo': Nie ma takiego pliku ani katalogu
rm: nie można usunąć `Fighters/One': Nie ma takiego pliku ani katalogu
rm: nie można usunąć `by': Nie ma takiego pliku ani katalogu
rm: nie można usunąć `One/AlbumArtSmall.jpg': Nie ma takiego pliku ani katalogu
rm: nie można usunąć `Muzika/Foo': Nie ma takiego pliku ani katalogu
rm: nie można usunąć `Fighters/One': Nie ma takiego pliku ani katalogu
rm: nie można usunąć `by': Nie ma takiego pliku ani katalogu
rm: nie można usunąć `One/cover.jpg': Nie ma takiego pliku ani katalogu
rm: nie można usunąć `Muzika/Foo': Nie ma takiego pliku ani katalogu
rm: nie można usunąć `Fighters/One': Nie ma takiego pliku ani katalogu
rm: nie można usunąć `by': Nie ma takiego pliku ani katalogu
rm: nie można usunąć `One/AlbumArt_{0D72E68B-DD40-40ED-832A-42988B92C31A}_Large.jpg': Nie ma takiego pliku ani katalogu
rm: nie można usunąć `Muzika/Foo': Nie ma takiego pliku ani katalogu
rm: nie można usunąć `Days': Nie ma takiego pliku ani katalogu
rm: nie można usunąć `Grace/AlbumArtSmall.jpg': Nie ma takiego pliku ani katalogu
rm: nie można usunąć `Muzika/Three': Nie ma takiego pliku ani katalogu
rm: nie można usunąć `Days': Nie ma takiego pliku ani katalogu
rm: nie można usunąć `Grace/Three': Nie ma takiego pliku ani katalogu
rm: nie można usunąć `Days': Nie ma takiego pliku ani katalogu
rm: nie można usunąć `Grace/cover.jpg': Nie ma takiego pliku ani katalogu
rm: nie można usunąć `Muzika/Three': Nie ma takiego pliku ani katalogu
rm: nie można usunąć `Days': Nie ma takiego pliku ani katalogu
rm: nie można usunąć `Grace/Three': Nie ma takiego pliku ani katalogu
rm: nie można usunąć `Days': Nie ma takiego pliku ani katalogu
rm: nie można usunąć `Grace/Folder.jpg': Nie ma takiego pliku ani katalogu
rm: nie można usunąć `Muzika/Three': Nie ma takiego pliku ani katalogu
rm: nie można usunąć `Days': Nie ma takiego pliku ani katalogu
rm: nie można usunąć `Grace/One-X/AlbumArtSmall.jpg': Nie ma takiego pliku ani katalogu
rm: nie można usunąć `Muzika/Three': Nie ma takiego pliku ani katalogu
rm: nie można usunąć `Days': Nie ma takiego pliku ani katalogu
rm: nie można usunąć `Grace/One-X/cover.jpg': Nie ma takiego pliku ani katalogu
rm: nie można usunąć `Muzika/Three': Nie ma takiego pliku ani katalogu
rm: nie można usunąć `Days': Nie ma takiego pliku ani katalogu
rm: nie można usunąć `Grace/One-X/Folder.jpg': Nie ma takiego pliku ani katalogu
rm: nie można usunąć `Muzika/Good': Nie ma takiego pliku ani katalogu
rm: nie można usunąć `Charlotte/desktop.ini': Nie ma takiego pliku ani katalogu
rm: nie można usunąć `Muzika/Good': Nie ma takiego pliku ani katalogu
rm: nie można usunąć `Charlotte/The': Nie ma takiego pliku ani katalogu
rm: nie można usunąć `Chronicles': Nie ma takiego pliku ani katalogu
rm: nie można usunąć `of': Nie ma takiego pliku ani katalogu
rm: nie można usunąć `Life': Nie ma takiego pliku ani katalogu
rm: nie można usunąć `and': Nie ma takiego pliku ani katalogu
rm: nie można usunąć `Death/desktop.ini': Nie ma takiego pliku ani katalogu
rm: nie można usunąć `Muzika/Good': Nie ma takiego pliku ani katalogu
rm: nie można usunąć `Charlotte/The': Nie ma takiego pliku ani katalogu
rm: nie można usunąć `Chronicles': Nie ma takiego pliku ani katalogu
rm: nie można usunąć `of': Nie ma takiego pliku ani katalogu
rm: nie można usunąć `Life': Nie ma takiego pliku ani katalogu
rm: nie można usunąć `and': Nie ma takiego pliku ani katalogu
rm: nie można usunąć `Death/AlbumArt_{B2537D45-494F-4792-B1D8-A6B5597DD71B}_Large.jpg': Nie ma takiego pliku ani katalogu
Jest tego troche więcej :) Czy ilość mojej kolekcji( ponad 20 GB) ma znaczenie? Może nie mam zainstalowanego jakiegoś pakietu?
Awatar użytkownika
ilu2112
Sędziwy Jeż
Sędziwy Jeż
Posty: 35
Rejestracja: 28 lut 2009, 20:31
Płeć: Mężczyzna
Wersja Ubuntu: 12.04
Środowisko graficzne: GNOME
Architektura: x86
Lokalizacja: Łódź
Kontakt:

Re: [bash] Sortowanie plików mp3

Post autor: ilu2112 »

Pierwsza myśl jaka mi przyszła do głowy - nazwy plików zawierają spacje?

EDIT: Raczej tak. Problem polega na tym, że jeżeli chcesz skasować plik "moja playlista" to wywołane zostanie polecenie rm moja playlista, które postara się skasować dwa pliki. Wiadomo, że to skutkować będzie błędem. Postaraj się zrobić tak:

Kod: Zaznacz cały

find Muzik/ -type f | grep -v 'mp3$' | xargs -I {} rm "{}"
Awatar użytkownika
beluosus
Zakręcona Traszka
Zakręcona Traszka
Posty: 695
Rejestracja: 01 paź 2006, 15:32
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: Xfce
Architektura: x86
Kontakt:

Re: [bash] Sortowanie plików mp3

Post autor: beluosus »

Albo to jest trudniejsze niż mi się wydaje albo kombinujecie jak koń pod górkę.

Kod: Zaznacz cały

find /dir/ -type f ! -iname '*.mp3' -delete
Najpierw użyj bez delete żeby sprawdzić czy lista faktycznie zawiera niechciane pliki.
teomos
Piegowaty Guziec
Piegowaty Guziec
Posty: 6
Rejestracja: 15 wrz 2008, 21:53
Płeć: Mężczyzna
Wersja Ubuntu: 8.04
Środowisko graficzne: GNOME
Kontakt:

Re: [bash] Sortowanie plików mp3

Post autor: teomos »

Dzięki! Oba rozwiązania działają :)
sir_herrbatka
Zakręcona Traszka
Zakręcona Traszka
Posty: 587
Rejestracja: 10 maja 2009, 14:44
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: KDE Plasma
Architektura: x86

Re: [Solved] [bash] Sortowanie plików mp3

Post autor: sir_herrbatka »

no i świetnie. Ja nawet nie wiedziałem, że z find można robić takie rzeczy ;-)

@teomos
Mam propozycję: zmień temat na "usuwanie określonego rodzaju plików z drzewa katalogów" bo ciekawe przykłady użycia find zostały tu zamieszczone zaś obecna nazwa sugeruje raczej na próbę przenoszenia plików do stosownych katalogów (sam tak sortowałem kolekcję ebooków).

Szkoda by się to zawieruszyło.
ODPOWIEDZ

Wróć do „Programowanie”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 10 gości