Fórum Ubuntu CZ/SK
Ubuntu pro osobní počítače => Obecná podpora => Téma založeno: makak 19 Srpna 2010, 13:26:01
-
Potrebujem v jednej zložke (a všetkých jej podzložkách) vymazať všetky súbory, ktoré nemajú koncovku .mp3, .wav, .m4a a to isté s veľkými písmenami - čiže všetky hudobné súbory a potrebujem aby ste mi pomohli s reg. výrazmi.
find . -name [--sem neviem čo dať--] | xargs rm -i
Práve to gúglim, ale mám ešte niečo na právi popri tom. Keby mi niekto rýchlo odpovedal, bol by som vďačný.
-
Alebo že by takto ?
rm !(*.mp3|*.wma|*.m4a|.MP3|*.WMA|*.M4A)
-
Třeba
find . -regextype posix-egrep -type f \! -iregex '.*\.(mp3|wma|m4a)'Opatrně při mazání, radši použij třeba mv nebo trash než rm nebo -delete.
-
find -regextype posix-egrep -type f \! -iregex '.*\.(mp3|wma|m4a|MP3|WMA|M4A)' | xargs rm
Tak som skúsil toto, ale je tu problém. Keďže ide o hudobné súbory, tak sú samozrejme v názvoch súborov medzery. A kvôli tomu mi to hádže chyby. Čo s tým ? Dá sa to riešiť ?
-
Kam mám v tomto dať ten regexp ? (v takej forme ako si to dal ty to nespravilo nič)
Ten predchádzajúci command bol dobrý, keď som dal echo miesto rm tak to fungovalo v pohode - pekne mi to vypísalo názvy všetkých súborov. Ak som ale dal rm, tak to bralo ako jeden argument a za každým názvom súboru bolo "\n". Potreboval by som nejak spraviť, aby to "\n" bralo ako koniec argumentu.
-
K tomu právě slouží -delete, ale je to (téměř) nenávratná operace
find . -regextype posix-egrep -type f ! -iregex '.*\.(mp3|wma|m4a)' -delete
Nebo použij trash - v případě problémů je možno vše obnovit z koše.sudo apt-get install trash-cli
find . -regextype posix-egrep -type f ! -iregex '.*\.(mp3|wma|m4a)' -exec trash '{}' \;
-
To nevadí, testoval som to najprv na pár umelo vytvorených súboroch, potom na zálohe a potom som prešiel na môj disk :)
Dík moc :)
-
Momentálne hľadám nejaké riešenie ako opraviť všetky ID3 tagy. Mám super program EasyTAG, ktorý mi vyplní tagy krásne podľa tvaru názvu súboru. Problém je teraz v tom, že niekde je názov súboru v tvare "[číslo] - [názov]", inde "[číslo]. [názov]", niektoré zas "[číslo] [názov]".
Chcel by som, aby to všade bolo v tvare "[číslo] - [názov]", čiže pre všetky súbory, ktoré majú 2 čísla za sebou a nenasleduje za nimi " - ", tak vymaže všetko po ďalší znak a dá tam " - ".
To je výzva :) Fakt neviem ako na to...
find -regextype posix-egrep -type f \! -iregex '.[0-9][0-9] - *' - toto mi hádzalo všetky súbory.