Strona 1 z 1
[Solved] [bash] Sortowanie plików mp3
: 15 cze 2011, 18:44
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
Re: [bash] Sortowanie plików mp3
: 15 cze 2011, 19:07
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

Re: [bash] Sortowanie plików mp3
: 16 cze 2011, 10:12
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

Re: [bash] Sortowanie plików mp3
: 16 cze 2011, 10:34
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

Re: [bash] Sortowanie plików mp3
: 16 cze 2011, 12:17
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?
Re: [bash] Sortowanie plików mp3
: 16 cze 2011, 12:30
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 "{}"
Re: [bash] Sortowanie plików mp3
: 16 cze 2011, 13:28
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.
Re: [bash] Sortowanie plików mp3
: 16 cze 2011, 15:59
autor: teomos
Dzięki! Oba rozwiązania działają

Re: [Solved] [bash] Sortowanie plików mp3
: 16 cze 2011, 18:21
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.