d4shoernchen
Goto Top

Script, Groß- in Kleinschreibung für vordefinierte Ordner

Guten Morgen,

ich benötige zwei Scripte, die Dateinamen von Groß- in Kleinschreibung umbenennen.

Das Ganze muss einmal auf Serverebene (CentOS 7) und in einer Datenbank stattfinden.

Hintergrund: Bildnamen müssen umbenannt werden. Es handelt sich um Dateien, die teilweise Großbuchstaben in Ihrem Dateinamen haben. Diese sollen einfach durch Kleinbuchstaben ersetzt werden. Es müsste rekursiv passieren, da dort einige Unterordner sind.

Der Ordner heißt "images" und dort sind für jedes Jahr separate Ordner angelegt.

Aus "mein-Bild.jpg" müsste dann also werden "mein-bild.jpg". Habt ihr eine Idee?

Besten Dank.

Viele Grüße

Content-Key: 334266

Url: https://administrator.de/contentid/334266

Printed on: April 25, 2024 at 09:04 o'clock

Member: SeaStorm
SeaStorm Apr 06, 2017 at 07:54:02 (UTC)
Goto Top
Hi

in bash
for i in *; do mv $i `echo $i | tr [:upper:] [:lower:]`; done

bei der DB .. kommts halt drauf an was für eine das ist.
SQL wäre das
UPDATE table SET field=lower(field)
Member: Lochkartenstanzer
Lochkartenstanzer Apr 06, 2017 updated at 07:59:51 (UTC)
Goto Top
Moin,

Im Filesystem ist es recht einfach:

find ordnerpfad -depth -exec rename 'y/A-Z/a-z/' {} \; 

zum Verständnis hilft man rename und man find

Bei der DB ist es im wesentlichen davon abhängig, welche DB Du verwendest. Bei (My)SQL könntest Du z.B.
UPDATE tabellenname SET spaltenname = LOWER(spaltenname)
verwenden

lks
Member: d4shoerncheN
d4shoerncheN Apr 06, 2017 updated at 08:59:06 (UTC)
Goto Top
Moin,

schon mal vielen Dank an euch beide.

Erstelle gerade ein snapshot vom Server und dann teste ich das mal durch.

Die Datenbank ist eine MariaDB 10, die Struktur ist von Wordpress. Wo so ziemlich alles in der "wp_posts"-Tabelle gespeichert ist. Hier wäre es sehr gut, wenn man eine Zeichenkette nutzen könnte, nach dem Motto: "Schreib alles klein was zwischen /images/*.jpg" steht.

Innerhalb der Tabelle "wp_posts" müsste nun in der Spalte "post_content" gesucht werden. Es fängt immer mit https://meinlink.de/wp-content/uploads; an, alles was dahinter kommt, sollte er dann mit Kleinbuchstaben ersetzen und nach einem "> wieder aufhören.

Viele Grüße
Member: SeaStorm
SeaStorm Apr 06, 2017 at 08:05:55 (UTC)
Goto Top
ich habe keine MariaDB hier, aber du hast glück, da maria
https://mariadb.com/kb/en/mariadb/regexp_replace/
kann. mit einem Regex ist das ein Kinderspiel
Member: d4shoerncheN
d4shoerncheN Apr 06, 2017 at 08:12:20 (UTC)
Goto Top
Moin @Lochkartenstanzer,

ich habe folgenden Befehl versucht:

find ordnerpfad -depth -exec rename 'y/A-Z/a-z/' {} \;
Allerdings sagt er mir da noch "not enough arguments". Schau ich mir das Manual an, gibt er mir aber auch nur vier Optionen "-v, -s, -h und -V" die für mich persönlich aber nur nach Hinweisen aussehen.

Besten Dank.
Member: d4shoerncheN
d4shoerncheN Apr 06, 2017 at 08:15:25 (UTC)
Goto Top
Moin @SeaStorm,

Zitat von @SeaStorm:

ich habe keine MariaDB hier, aber du hast glück, da maria
https://mariadb.com/kb/en/mariadb/regexp_replace/
kann. mit einem Regex ist das ein Kinderspiel

ah, super. Schaue ich mir mal an, ob ich damit zurecht komme.

Bei deinem Befehl oben, könntest du dort noch kurz erklären, was und wo er genau was macht?
for i in *; do mv $i `echo $i | tr [:upper:] [:lower:]`; done

Besten Dank
Member: Alchimedes
Alchimedes Apr 06, 2017 at 12:28:39 (UTC)
Goto Top
Hallo ,

Bei deinem Befehl oben, könntest du dort noch kurz erklären, was und wo er genau was macht?
for i in *; do mv $i `echo $i | tr [:upper:] [:lower:]`; done

kann man getrost von links nach rechts lesen !
Besseres Verstaendniss bekommst Du vielleicht so :

for i in * \\for schleife , i ist die Variable
do
mv $i | ` tr [:upper:][lower:]` \\ dem Kommando mv Variable $i wird ueber die Pipe eine Kommandosubstitution
(das ist der Befehl zwischen den Backticks) uebergeben. Und der Befehl tr ersetzt
die grossen Buchstaben gegen Kleine.
done