Diese Website existiert nur weil wir Werbung mit AdSense ausliefern.
Bitte den AdBlocker daher auf dieser Website ausschalten! Danke.

Ändern der Dateinamen in einem Rutsch

Alles rund um die Systemverwaltung, die Administration und Konfiguration Eures Linuxsystems

Moderator: Moderatoren

Antworten
Spielwurm
Advanced Hacker
Advanced Hacker
Beiträge: 1310
Registriert: 30. Dez 2007, 11:55
Kontaktdaten:

Ändern der Dateinamen in einem Rutsch

Beitrag von Spielwurm » 8. Nov 2009, 19:04

Ich musste meine Festplatte mit den Filmen auslagern. Deshalb zeigen in der zugehörigen Datenbank (datacrow) alle Dateinamen ins Leere. Jetzt will ich mit Hilfe von SQL-Befehlen die Dateinamen in einem Rutsch ändern. Was ich bereits habe:

SELECT * FROM movie WHERE (filename LIKE '/home/hartmut/Filme/ReportagenDokus/%') AND (created <'2009-08-05');

damit erhalte ich alle Dateien, die ich bearbeiten will. Mit TRIM könnte ich den Pfad abtrennen. Aber ich muss ja dann den neuen Pfad zum Dateinamen hinzufügen. Leider finde ich dafür kein Beispiel im Netz, hat jemand von Euch eine Lösung dafür?

Hartmut
Tuxedo Book 15-Zoll mit GM-940 und Opensuse 42.2, AMD Phenom und Nvidia GT210 für Video mit Opensuse 13.1, Zbox HD-ND01 als Server, Pentium III/600 für Audio mit Opensuse 13.1

Werbung:
Benutzeravatar
P6CNAT
Advanced Hacker
Advanced Hacker
Beiträge: 1014
Registriert: 24. Jul 2006, 14:26
Wohnort: Mainhausen

Re: Ändern der Dateinamen in einem Rutsch

Beitrag von P6CNAT » 10. Nov 2009, 19:33

Hallo,

mit datacrow bin ich nicht vertraut.
Ich würde zwei Möglichkeiten in Erwägung ziehen.
Export der Tabelle in eine Textdatei, bearbeiten der Dateinamen, Import in die Tabelle.

Die zweite, und elegantere Möglichkeit ist aus der Abfrage gleich ein Update Kommando zu generieren,
das ganze in eine Datei umleiten und danach laufen lassen.

Ad hoc so in der Art:

Code: Alles auswählen

SELECT 'UPDATE movie set filename = /NeuerPfad/' + TRIM(..., filename) + 'WHERE primaerschluessel = ' + primaerschluessel   
  FROM movie WHERE (filename LIKE '/home/hartmut/Filme/ReportagenDokus/%') AND (created <'2009-08-05');
 
Ich weiß nicht wie die TRIM und die Merge Funktion auf datacrow funktionieren, das
unterscheidet sich bei verschiedenen Datenbanken. Aber das wirst du schon hinkriegen.

Gruß
Georg
openSUSE Leap 42.3 64 Bit
KDE-Plasma 5.8.7
CPU: AMD A8-5500 mit integrierter GPU Typ AMD Radeon HD 7560D

Spielwurm
Advanced Hacker
Advanced Hacker
Beiträge: 1310
Registriert: 30. Dez 2007, 11:55
Kontaktdaten:

Re: Ändern der Dateinamen in einem Rutsch

Beitrag von Spielwurm » 11. Nov 2009, 17:05

Danke, ich habe inzwischen eine tippfreundlicher Lösung gefunden:

UPDATE movie SET filename = Replace(filename,'/home/hartmut/Filme/ReportagenDokus','/media/ReporDokus-1')

Nur zur Info: datacrow benutzt die hsql-Datenbank und hat eine SQL-Konsole an Bord, was in diesem Fall wirklich viel Arbeit erspart hat ...

Hartmut
Tuxedo Book 15-Zoll mit GM-940 und Opensuse 42.2, AMD Phenom und Nvidia GT210 für Video mit Opensuse 13.1, Zbox HD-ND01 als Server, Pentium III/600 für Audio mit Opensuse 13.1

Benutzeravatar
P6CNAT
Advanced Hacker
Advanced Hacker
Beiträge: 1014
Registriert: 24. Jul 2006, 14:26
Wohnort: Mainhausen

Re: Ändern der Dateinamen in einem Rutsch

Beitrag von P6CNAT » 11. Nov 2009, 20:36

Hi,

schick, die REPLACE Funktion. Ist leider kein Standard und hätte mir eine Menge Kopfzerbrechen ersparen können.

Gruß
Georg
openSUSE Leap 42.3 64 Bit
KDE-Plasma 5.8.7
CPU: AMD A8-5500 mit integrierter GPU Typ AMD Radeon HD 7560D

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast