Bulk actie spaties in naam verwijderen

Audio, Muziek, ...
Gebruikersavatar
dirkjanl
Guru
Guru
Berichten: 916
Lid geworden op: Do 21 Mar 2013, 13:40
Locatie: Borger
Contact:

Bulk actie spaties in naam verwijderen

Berichtdoor dirkjanl » Zo 21 Aug 2022, 12:15

Plaats het ook maar weer onder Audio omdat het geluidsbestanden betreft.
In mijn muziekverzameling staan vele mappen met geripte cd's in .wav formaat en waarbij de spaties niet zijn vervangen door niets of door een underscore.

Als ik die mappen nu wil converteren naar .flac bestanden moeten die spaties in die namen er tussen uit, anders werkt de flac opdracht in de terminal niet.
Via 'Bestandenhernoemer' is het me niet gelukt om in de gehele naam alle spaties te verwijderen.
Voorbeeld naam: 01 The Balled Of Bill Hubbard.wav

Wel door alles na de eerste twee tekens alles van die naam te verwijderen, maar dan houd ik alleen volgnummers over. Ik kijk of het anders kan.
Weet iemand hoe ik met een terminal opdracht de spaties in alle - 14 - namen die in één map staan kan verwijderen of vervangen door een underscore?
Linux Mint 21.2 Cinnamon op productie PC's. Op testbak LM 21.3 Cin. APLinux op MuziekPC Gouden tips: viewtopic.php?f=1&t=3264
Gebruikersavatar
MenthaSuaveolens
Held
Held
Berichten: 394
Lid geworden op: Vr 23 Mar 2018, 11:41

Re: Bulk actie spaties in naam verwijderen

Berichtdoor MenthaSuaveolens » Zo 21 Aug 2022, 13:07

Je kan in Bulkrenamer aka bestanderhernoemer eenvoudig de spaties vervangen of weglaten. Hiertoe kies je de modus vervangen en vervolgens de optie "Reguliere uitdrukking".

Geef dan \ (dit is een \ gevolgd door een spatie) op en kies bv. een leeg vervangen veld. Alle spaties verdwijnen dan uit de namen
Gebruikersavatar
dirkjanl
Guru
Guru
Berichten: 916
Lid geworden op: Do 21 Mar 2013, 13:40
Locatie: Borger
Contact:

Re: Bulk actie spaties in naam verwijderen

Berichtdoor dirkjanl » Zo 21 Aug 2022, 14:02

Fantastish, MenthaSuaveolens, dat werkt prima!
Wat ik gedaan heb met de Bestandenhernoemer: de bestanden in een map geselecteerd, > Kies voor 'Vervangen' 'Alleen naam' > 'Reguliere uitdrukking' aangevinkt. In het veld 'Zoeken' de "\ " (dit is een \ gevolgd door een spatie) ingetypt en de namen wijzigden zich in de voorbeeld kolom 'Nieuwe Naam': geen spaties meer. En klik op 'Hernoemen'.
Linux Mint 21.2 Cinnamon op productie PC's. Op testbak LM 21.3 Cin. APLinux op MuziekPC Gouden tips: viewtopic.php?f=1&t=3264
Gebruikersavatar
dirkjanl
Guru
Guru
Berichten: 916
Lid geworden op: Do 21 Mar 2013, 13:40
Locatie: Borger
Contact:

Re: Bulk actie spaties in naam verwijderen

Berichtdoor dirkjanl » Zo 21 Aug 2022, 15:49

En dan een stapje verder, kan dit ook via de terminal?
We hebben deze FFMPEG opdracht die de .wav converteert naar .flac.

Code: Selecteer alles

for filename in $(ls *.wav); do ffmpeg -i "$filename" "$(echo $filename | sed 's/wav$/flac/')"; done
En we hebben uit de post over cd ripper 'abcde' de wat ik maar deelopdracht noem

Code: Selecteer alles

-e 's/ /_/g'
waarmee de spaties vervangen worden door een underscore.

Is het mogelijk om die twee samen te voegen in één opdrachtregel? Zodat bijvoorbeeld na het converteren van .wav naar .flac de spaties worden vervangen door een underscore?
Ik heb een paar pogingen gedaan om dat uit te proberen maar ik kreeg steeds een foutmelding.

Code: Selecteer alles

for filename in $(ls *.wav); do ffmpeg -i "$filename" "$(echo $filename | sed 's/wav$/flac/' -e 's/ /_/g')"; done

Code: Selecteer alles

for filename in $(ls *.wav); do ffmpeg -i "$filename" "$(echo $filename | sed -e 's/ /_/g' 's/wav$/flac/')"; done

Code: Selecteer alles

for filename in $(ls *.wav); do ffmpeg -i "$filename" "$(echo $filename | sed 's/wav$/flac/' | -e 's/ /_/g')"; done

Code: Selecteer alles

for filename in $(ls *.wav); do ffmpeg -i "$filename" "$(echo $filename | sed -e 's/ /_/g' | 's/wav$/flac/')"; done
Let wel, ik heb hier nooit in geoefend en het enige waar ik naar kijk is patronen in een opdrachtregel en probeer aan de hand daarvan te kijken hoe ik iets kan wijzigen. Nog zonder resultaat vandaag ;-)
Linux Mint 21.2 Cinnamon op productie PC's. Op testbak LM 21.3 Cin. APLinux op MuziekPC Gouden tips: viewtopic.php?f=1&t=3264
Gebruikersavatar
MenthaSuaveolens
Held
Held
Berichten: 394
Lid geworden op: Vr 23 Mar 2018, 11:41

Re: Bulk actie spaties in naam verwijderen

Berichtdoor MenthaSuaveolens » Zo 21 Aug 2022, 20:57

Inderdaad, die commando's kunnen niet werken. Minder gekend is dat het for-commando niet goed werkt als je bestandsnamen met spaties hebt. Maak bv. eens een bestandsmap met enkele bestanden in waarvan er enkelen een spatie bevatten. Voer dan bv. het volgende commando uit (het zou enkel een lijst van de bestandsnamen mogen opleveren).

Code: Selecteer alles

for filename in $(ls); do echo "$filename";done
Om het for-commando met bestandsnamen te doen werken die spaties bevatten, zal je de omgevingsvariable IFS moeten aanpassen.

Code: Selecteer alles

IFS=$(echo -en "\n\b") #pas IFS aan
for filename in $(ls); do echo "$filename";done #nu werkt de for-loop goed !
We hernoemen alle bestanden met een spatie er in naar een bestandsnaam met een underscore in plaats van de spatie (we gebruiken tr of translate)

Code: Selecteer alles

for filename in $(ls); do mv -T "$filename" "$(echo $filename | tr -s [:blank:] [_])";done
Gebruikersavatar
dirkjanl
Guru
Guru
Berichten: 916
Lid geworden op: Do 21 Mar 2013, 13:40
Locatie: Borger
Contact:

Re: Bulk actie spaties in naam verwijderen

Berichtdoor dirkjanl » Zo 21 Aug 2022, 21:51

Dank weer, hier moet ik eens goed naar kijken. Op dit moment duizelt het me ;-)
Linux Mint 21.2 Cinnamon op productie PC's. Op testbak LM 21.3 Cin. APLinux op MuziekPC Gouden tips: viewtopic.php?f=1&t=3264
Gebruikersavatar
dirkjanl
Guru
Guru
Berichten: 916
Lid geworden op: Do 21 Mar 2013, 13:40
Locatie: Borger
Contact:

Re: Bulk actie spaties in naam verwijderen

Berichtdoor dirkjanl » Ma 22 Aug 2022, 12:26

Oké
Uitgeprobeerd en gezien wat het doet. Wat ik denk dat voor mij nu het meest praktische is is de laatste:

Code: Selecteer alles

for filename in $(ls); do mv -T "$filename" "$(echo $filename | tr -s [:blank:] [_])";done
En kan die dan samen met onderstaande (.wav converteren naar .flac) in een 'opdracht'.

Code: Selecteer alles

for filename in $(ls *.wav); do ffmpeg -i "$filename" "$(echo $filename | sed 's/wav$/flac/')"; done
Dan gaat het als volgt:

Code: Selecteer alles

for filename in $(ls); do mv -T "$filename" "$(echo $filename | tr -s [:blank:] [_])";done
for filename in $(ls *.wav); do ffmpeg -i "$filename" "$(echo $filename | sed 's/wav$/flac/')"; done
En dat werkt! Bedankt u allen!

Edit een poosje later: Bij een tweede poging ging het toch niet: twee opdrachten in een keer geven lukte niet. Wat ik er zo snel uit begrijp is dat het commando ieder los woord als een bestand ziet.
Linux Mint 21.2 Cinnamon op productie PC's. Op testbak LM 21.3 Cin. APLinux op MuziekPC Gouden tips: viewtopic.php?f=1&t=3264
Gebruikersavatar
dirkjanl
Guru
Guru
Berichten: 916
Lid geworden op: Do 21 Mar 2013, 13:40
Locatie: Borger
Contact:

Re: Bulk actie spaties in naam verwijderen

Berichtdoor dirkjanl » Ma 22 Aug 2022, 12:52

Afbeelding
Afbeelding
Linux Mint 21.2 Cinnamon op productie PC's. Op testbak LM 21.3 Cin. APLinux op MuziekPC Gouden tips: viewtopic.php?f=1&t=3264
Gebruikersavatar
MenthaSuaveolens
Held
Held
Berichten: 394
Lid geworden op: Vr 23 Mar 2018, 11:41

Re: Bulk actie spaties in naam verwijderen

Berichtdoor MenthaSuaveolens » Ma 22 Aug 2022, 14:10

Ja, maar heb je IFS wel gezet vooraleer je die acties hebt uitgevoerd? Het is daarom beter een shell-script te maken, als je die acties veelvuldig wilt gaan gebruiken.
Gebruikersavatar
dirkjanl
Guru
Guru
Berichten: 916
Lid geworden op: Do 21 Mar 2013, 13:40
Locatie: Borger
Contact:

Re: Bulk actie spaties in naam verwijderen

Berichtdoor dirkjanl » Ma 22 Aug 2022, 14:31

Ah, ik heb een middagdutje gedaan en zie:
Eerst doen:

Code: Selecteer alles

IFS=$(echo -en "\n\b") #pas IFS aan
for filename in $(ls); do echo "$filename";done #nu werkt de for-loop goed !
for filename in $(ls); do mv -T "$filename" "$(echo $filename | tr -s [:blank:] [_])";done
for filename in $(ls *.wav); do ffmpeg -i "$filename" "$(echo $filename | sed 's/wav$/flac/')"; done
Wel krijg ik de boodschappe:
>>[swscaler @ 0x562e28a046c0] deprecated pixel format used, make sure you did set range correctly
>>[flac @ 0x562e2899eb80] Frame rate very high for a muxer not efficiently supporting it.
>>Please consider specifying a lower framerate, a different muxer or -vsync 2
Framerate staat op 90k fps, maar de geluidsbestanden gaan verder prima!
.
Edit: @MenthaSuaveolens, ik zag jouw reactie pas toen ik de mijne al had geschreven.
Linux Mint 21.2 Cinnamon op productie PC's. Op testbak LM 21.3 Cin. APLinux op MuziekPC Gouden tips: viewtopic.php?f=1&t=3264
Gebruikersavatar
dirkjanl
Guru
Guru
Berichten: 916
Lid geworden op: Do 21 Mar 2013, 13:40
Locatie: Borger
Contact:

Re: Bulk actie spaties in naam verwijderen

Berichtdoor dirkjanl » Ma 22 Aug 2022, 14:34

Ja, maar heb je IFS wel gezet vooraleer je die acties hebt uitgevoerd? Het is daarom beter een shell-script te maken, als je die acties veelvuldig wilt gaan gebruiken.
Tja, een shell-script maken, dat heb ik dus nog nooit gedaan. Dan moet ik daar eerst eens een lesje in volgen.
Linux Mint 21.2 Cinnamon op productie PC's. Op testbak LM 21.3 Cin. APLinux op MuziekPC Gouden tips: viewtopic.php?f=1&t=3264

Terug naar “Audio”

Wie is er online

Gebruikers op dit forum: Geen geregistreerde gebruikers en 33 gasten