11 berichten aan het bekijken - 1 tot 11 (van in totaal 11)
  • Q:

    Bijdrager
    McMeller

    [Opgelost] Datum converteren met Better Rename 9

    Better Rename 9 heeft me al vaak geholpen bestanden in bulk te organiseren. Nu wil ik van zo’n 400 bestanden de datum in de bestandsnaam converteren van DDMMYYYY naar YYYYMMDD.

    Ik zou Move text to postition kunnen gebruiken, en zo eerst alle varianten op YYYY naar de juiste positie kunnen trekken. Dat moet dan wel voor ieder jaar apart, en vervolgens ook per maand. Bovendien denk ik dan in de problemen te komen als YD, vervolgens bijvoorbeeld 21 kan vormen.

    De huidige naamgeving is consequent. Ik wil alleen posities swappen. Zie ik een eenvoudigere manier over het hoofd?

    • Dit onderwerp is gewijzigd 5 maanden, 3 weken geleden door  Night. Reden: Topic opgelost

    Bijdrager
    feek

    Ik ken Better Rename niet, maar kan je RegEx (regular expressions) gebruiken?

    Zoek dan de datum (er van uitgaande dat er niet meerdere getallenreeksen zijn)

    (\d{2})(\d{2})(\d{4})

    en vervangen met

    $3$2$1

     

     


    Bijdrager
    McMeller

    Bedankt voor je reactie! Ik had het gisteren willen proberen maar kwam er niet aan toe, vanavond nieuwe kans.

    Waarschijnlijk heb je me hiermee geholpen. Omdat ik er met de standaard-functies van Better Rename niet uitkwam, keek ik al naar gebruik van Regular Expressions, wat deze app ook kan. Na wat Google’n kreeg ik de indruk dat het de beste oplossing zou zijn, maar ik kwam er zelf niet uit welke strings ik moest gebruiken. Je uitgangspunt klopt, elke bestandsnaam bevat alleen een getallenreeks in DDMMYYYY-notering, met steeds dezelfde voorloper.

    Nu word ik gelijk nieuwsgierig, want gebruik van Better Rename is ongetwijfeld niet de enige manier om Regular Expressions toe te passen op mijn Mac. Een misschien ook niet de handigste. Hoe kan dat nog meer? Terminal?


    Bijdrager
    McMeller

    Perfect, bedankt man! Qua tijdsbesteding kan ik al niet meer van efficiëntie spreken maar dit is leerzamer en foutloos, thanks!

    Heb je zin om mij nog iets van de theorie uit te leggen? Met de speciale tekens stippel ik duidelijk een patroon uit. Twee maal 2 en Ă©Ă©n maal 4 slaat ongetwijfeld op de twee tekens in DD en MM, en de vier tekens in YYYY. Maar wat zou er nou gebeuren als mijn bestandsnamen meerdere cijferreeksen van 8 tekens bevatten?


    Bijdrager
    feek

    Regular Expressions worden idd veel in Terminal commando’s gebruikt, maar ook in bijna alle programmeertalen. Het is namelijk een zeer krachtige zoek (en vervang) methode. Er is veel over te vinden. Het is vooral veel proberen.

    Een machtige site om Regex te testen is https://regexr.com Werkt als een tierelier!

    Nog even een korte uitleg:

    de haakjes zijn om groepen te definiëren (die je weer kunt vervangen $1 $2 en $3) Er zijn dus drie groepen dag / maand / jaar

    \d{2} betekent exact twee getallen

    Als er in jouw geval meer dan 8 cijfers achter elkaar staan worden alleen de eerste acht gepakt. Als er 16 staan (achter elkaar) dan wordt er twee keer vervangen.


    Bijdrager
    McMeller

    Machtige materie, bedankt! Het heeft me zelfs twee keer veel tijd gescheeld, want ik moet ook alle links op een webpagina updaten. Eerst dacht ik te ingewikkeld: zou ik a.d.h.v. een lijst met de namen vóór en na, alles in één keer kunnen replacen? Nee, veel simpeler, ik kan dezelfde aanpak ongetwijfeld toepassen in de code. En dat is inderdaad gelukt, bovendien met zekerheid foutloos.

    Laatste vraag. Ik kom nu via Better Rename op Regular Expressions. Je zegt dat het ook met Terminal kan, bijvoorbeeld. Hoe zou jij deze case, 300 bestandsnamen wijzigen, nu aanpakken, zonder Better Rename? Terminal? Andere app?


    Bijdrager
    feek

    Mooi, van eerst “niet efficiĂ«nt” naar “heeft me veel tijd gescheeld”:)

    Ja je kunt ook dit soort dingen doen via terminal commando’s (al dan niet gebruik makend van Perl, Python, Ruby). Google zal daar vast diverse goede voorbeelden van geven. Zoek eens op “Multi Rename Files Bash Regex”


    Bijdrager
    Jakko Westerbeke

    <p class=”cite”>McMeller op 22 maart 2018 om 20:41</p>
    Heb je zin om mij nog iets van de theorie uit te leggen?

    Veel nuttige info en uitleg daarover is hier te vinden: http://www.regular-expressions.info


    Bijdrager
    McMeller

    Ik wil nog even laten weten dat het helemaal gelukt is.

    Hoewel Better Rename met gebruik van RegEx direct de goede conversie toonde, verliep het daadwerkelijke hernoemen wat vreemd. De bestandsnamen bestonden namelijk uit zeven keer de cijferteeks, met steeds een vraagteken ertussen. Dat leek mij een bug in de app te zijn, of misschien had ik toch nog iets moeten meegeven in de string? Met dezelfde app heb ik de bestandsnamen ingekort tot 8 karakters, toen was het resultaat goed.

    Vervolgens hetzelfde trucje in de code van de webpagina toegepast. Ik had Google even nodig om te weten dat RegEx in TextWranger bekend staat als Grep, en dat ik niet $3$2$1 maar \3\2\1 moest gebruiken. Maar het resultaat is perfect.


    Bijdrager
    Jakko Westerbeke

    Grep is een Unix-commando waarin je regexen kunt gebruiken om te zoeken in de invoer die je het commando geeft, en veel andere programma’s waarin je regexen kunt gebruiken, noemen die inderdaad „grep”. Adobe InDesign bijvoorbeeld ook, waarin je „GREP-stijlen” kunt maken om op tekst toe te passen (zodat je, om maar wat te noemen, alle breuken als 1/2 en 2/5 eruit kunt laten zien als ½ en ⅖ door super- en subscript automatisch toe te laten passen). Zoals je ondervonden hebt, wil de precieze werking alleen nog wel eens een beetje verschillen, dus het blijft opletten als een regex niet doet wat je denkt dat hij zou moeten doen.


    Bijdrager
    McMeller

    Bedankt voor de toelichting, ik leer graag over de algemene materie en niet alleen case-specifiek.:-)

11 berichten aan het bekijken - 1 tot 11 (van in totaal 11)

Je moet ingelogd zijn om een reactie op dit onderwerp te kunnen geven.