subst is a helpfull tool I use almost every day.
You can rename files with it or substitute file contents using perl regular expressions.
Today I published a new version (1.1.4) which goes one step further and allows
to rename directories as well. And it is possible to do this recursively. Really nice.
As an comprehensive example, today I issued this command to rename all files and directories
in a mp3 folder I received by a friend. These files and directories had all sorts of nonsense
characters in them (which is everything I don’t need in a commandline environment):
subst -R -m 's/\W/-/g' -m 's/_/-/g' -m 's/-+/-/g' -m 's/-mp3/.mp3/' -m 's/([A-Z])/lc($1)/ge' -m 's/-$//' mp3dir
Ok, looks weird, let’s dive into it:
-
-R
recurse into mp3dir
-
-m 's/\W/-/g'
Replace all non-word characters with a dash.
-
-m 's/_/-/g'
Replace all underscores with dashes.
-
-m 's/-+/-/g'
Replace all excess dashes with one (like ---
to -
)
-
-m 's/-mp3/.mp3/'
Turn the suffix into a suffix again, since \W
(see above) also captures the dot.
-
-m 's/([A-Z])/lc($1)/ge'
Lowercase all upper case letters (easier to type).
-
-m 's/-$//'
Finally remove trailing dashes, which occur from time to time (e.g. if a filename ends with .
).
Find the latest version here. Copy to your disk,
rename to subst
and use it. Documentation is included.
19 November 2020
|
#software
Wieder einmal wird eine gute Serie beendet, diesesmal der Tatortreiniger mit Bjarne Mädel. Ich leide immer noch unter dem "Mord mit Aussicht"-Ende. Mann Mann Mann :(
Also dann, Schotty, fare well und sag Deinem Filzgleiterberater einen schönen Gruss!
19 December 2018
|
#kino
Es gilt als das beste Mehl der Welt. Jetzt gibt es die Produkte von Steinmetz unter der Marke „Unsere Heimat – echt & gut“. Ein einzigartiges Verarbeitungsverfahren macht aus regionalem Getreide ein echtes Premium-Mehl.
schreibt Edeka auf seiner Webseite.
Ich hatte dieses Mehl schonmal da und es nicht weiter verwendet. An den Grund konnte ich mich nicht mehr erinnern. Nun hat es meine Frau wieder gekauft (ich hatte 550 auf den Zettel geschrieben). Heute - am Sonntag - wollte ich mein Livieto Madre füttern und plötzlich fiel mir wieder auf, weswegen ich dieses Mehl nicht mehr haben wollte:
Es enthält Spelzen!
Nun habe ich ja gelernt, dass der deutsche Standard 550 ein Mahlgrad ist. Mahlgrad in Form von "Alle Körner haben ungefähr die gleiche Grösse". Das hat der Müllerei Steinmetz in 120 Jahren wohl noch nie jemand gesagt. Auf jeden Fall scheint die "Erfindung" des Herrn Steinmetz nichts zu taugen, wenn da nach dem Sieben noch Spelzen im Mehl sind.
Streng genommen wäre das ja sogar Betrug. Denn wenn Vollkornmehl in der Tüte ist, muss man es auch draufschreiben. Tat man bei Edeka/Steinmetz aber nicht. Tja. Faulheit? Unwissenheit? Inkompetenz? Oder einfach nur ein paar Dilettanten bei der Arbeit? Man weiss es nicht.
Vielleicht finde ich ja mal die Muße im Edeka den Marktleiter darauf anzusprechen, viel bringen wird das aber wohl nichts.
2018-10-28 - Ich hab mal eine kleine Handvoll ausgesiebt:

2018-10-28 - da sind sie, die Spelzen, gar nicht mal so wenige:

2018-10-28 - Qualität, die ankotzt:

2018-10-28 - 550 steht drauf, ist aber nicht drin:

28 October 2018
|
#kochen
Lutz Donnerhacke hat sehr gut beschrieben, wie man als Privatblogger mit der neuen EU Datenschutzverordnung umgehen muss. Ich habe mir meine Seite also äquivalent genauer angeschaut und festgestellt, dass ich - wie im Impressum bereits beschrieben - keine IP-Adressen speichere und Email-Adressen optional sind und diese wiederum auch NUR wenn man kommentieren möchte.
Da ich in letzter Zeit aber ohnehin kaum noch zum Posten komme und schon seit langer Zeit keine Kommentare mehr gepostet worden sind (Spammer wurden recht wirksam von meinen Abwehrmaßnahmen ferngehalten, falls jemand den Django Code haben möchte: einfach bei mir melden) - habe ich beschlossen, dass ich das Feature auch einfach ausschalten kann.
Gesagt, getan. Kommentare sind ab sofort abgeschaltet, vorhandene Kommentare und die Daten der Kommentierer habe ich alle gelöscht. Zack und aus. Somit speichere ich überhaupt keine personenbezogenen Daten mehr, die ich gemäß EU-DSGVO dokumentieren müsste.
Meine Datenschutzerklärung im Impressum habe ich entsprechend angepasst.
24 May 2018
|
#server
Sometime you might want to know which key was pressed last in a lisp function. I came up with this little function for this purpose:
(defun last-key ()
"Return the last key pressed."
(car (reverse (append (recent-keys) nil))))
03 August 2017
|
#emacs