Hinweis: Das Forum wird geschlossen! Neue Registrierungen sind nicht mehr möglich!

 Zurück zu Pro-Linux   Foren-Übersicht   FAQ     Suchen    Mitgliederliste
Datei erkennen und umbennen

 
Neuen Beitrag schreiben   Auf Beitrag antworten    Pro-Linux Foren-Übersicht -> Programmieren - Allgemein
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Carsten NRW
Gast





BeitragVerfasst am: 10. Jun 2005 8:50   Titel: Datei erkennen und umbennen

Hallo zusammen

Ich habe folgendes Problem:
Ich habe einen Ordner TEST
In diesem Ordner TEST gibt es einen Ordner SICHERUNG
In beiden Ordnern befindet sich eine Daeit mit selben,variablen Namen und immer gleicher Endung. (zb. 12345.tes)
Das skript sollte folgendes tun.
Es soll in beiden Ordnern nachgucken ob es identische Dateien gibt und dann im Ordner SICHERUNG die Dateiendung von *.tes auf *.sic ändern.

Wer kann mir helfen

Danke Carsten
 

Lateralus
prolinux-forum-admin


Anmeldungsdatum: 05.05.2004
Beiträge: 1238

BeitragVerfasst am: 10. Jun 2005 11:45   Titel:

Bei kleinen Dateien geht das schnell. Bei größeren wird man vielleicht einen einfacheren checksum-Algorithmus verwenden wollen.

Code:

cd TEST

for file in $(find . -type f -maxdepth 1 -iname *.tes); do
  # Wenn die Sicherungsdatei existiert
  if [ -e SICHERUNG/"$file" ]; then
    # und die gleich Prüfsumme haben
    if [ "$(md5sum $file)" = "$(md5sum SICHERUNG/"$file")" ]; then
      # Erzeuge neuen Namen aus $file und ersetze ".tes" durch ""
      new_name = $( echo $file | awk ' { sub(".tes", "") } ' )
      mv SICHERUNG/"$file" SICHERUNG/"$new_name".sic
    fi
  fi
done


Dieses Skript tut ein bisschen mehr. Es wendet die besprochene Regel auf jede Datei im Verzeichnis an, die auf .tes endet. Es gibt dabei ein paar Probleme, welche du hier:
http://www.prolinux.de/forum/viewtopic.php?t=1028739
nachlesen kannst.
 
Benutzer-Profile anzeigen Private Nachricht senden

demon
Pro-Linux


Anmeldungsdatum: 24.11.1999
Beiträge: 389
Wohnort: Wörth am Rhein

BeitragVerfasst am: 10. Jun 2005 13:19   Titel:

Wie waere es, wenn wir einen Sticky-Thread hier machen wuerden, in den jeder seine Mini-Scripte posten kann. Wuerde wohl vor allem Anfaengern helfen, die Bash besser zu verstehen/nutzen. Natuerlich muessten die Aktionen aehnlich dem letzten Tipp kommentiert sein.

Gruss
demon
 
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen

Lateralus
prolinux-forum-admin


Anmeldungsdatum: 05.05.2004
Beiträge: 1238

BeitragVerfasst am: 10. Jun 2005 16:00   Titel:

<OT>
@demon: Ich finde die Idee gut.
</OT>
 
Benutzer-Profile anzeigen Private Nachricht senden

kanonenfutter



Anmeldungsdatum: 10.09.2004
Beiträge: 266

BeitragVerfasst am: 10. Jun 2005 20:47   Titel:

@Lateralus:
> Bei kleinen Dateien geht das schnell. Bei größeren wird man vielleicht einen einfacheren checksum-Algorithmus verwenden wollen.

hmm, aber md5sum muss ja auch die ganze datei durchlesen, da würde es mich wundern, wenn das schneller wäre als ein simples "diff".
_________________
"Email und Internet haben gemeinsam, dass sie beide in HTML geschrieben sind" (Peter Huth, TV-Computerexperte). Zitiert nach http://www.antihuth.de/
 
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen

Lateralus
prolinux-forum-admin


Anmeldungsdatum: 05.05.2004
Beiträge: 1238

BeitragVerfasst am: 11. Jun 2005 11:21   Titel:

@kanonenfutter
Hab ich nicht recht verstanden. Was ist nun schneller?

Ich bezog mich eher darauf, dass man Programme, wie sum oder cksum benutzen könnte, welche garantiert schneller als md5sum sind.
 
Benutzer-Profile anzeigen Private Nachricht senden

kanonenfutter



Anmeldungsdatum: 10.09.2004
Beiträge: 266

BeitragVerfasst am: 11. Jun 2005 15:23   Titel:

@Lateralus:
> Hab ich nicht recht verstanden. Was ist nun schneller?
> Ich bezog mich eher darauf, dass man Programme, wie sum oder cksum benutzen könnte, welche garantiert schneller als md5sum sind.

und ich meinte, dass man überhaupt kein checksum-programm sondern einfach diff benutzen sollte Wink
man müsste man das natürlich im einzelnen nachprüfen, aber generell kann man doch davon ausgehen, dass es *immer* langsamer ist, eine checksumme zu berechnen als nur das file anzuschauen. diff hat aber vor allem noch einen anderen vorteil: während du beim checksummen-bilden *immer* die ganze datei lesen musst, ist diff bereits beim ersten auftreten eines unterschieds fertig. das mag im vorliegenden fall keinen grossen unterschied machen, aber es spricht eben gar nichts dafür, eine checksumme zu verwenden.
mit diff wird die abfrage auch etwas einfacher:
Code:
 if diff -q $file SICHERUNG/$file; then

_________________
"Email und Internet haben gemeinsam, dass sie beide in HTML geschrieben sind" (Peter Huth, TV-Computerexperte). Zitiert nach http://www.antihuth.de/


Zuletzt bearbeitet von kanonenfutter am 11. Jun 2005 17:45, insgesamt 1-mal bearbeitet
 
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen

Lateralus
prolinux-forum-admin


Anmeldungsdatum: 05.05.2004
Beiträge: 1238

BeitragVerfasst am: 11. Jun 2005 16:37   Titel:

Gute Idee. Ich wusste gar nicht, dass diff eine Option besitzt, die nur darauf hinweist, dass ein Unterschied existiert und dadurch nicht die komplette Datei durchschauen muss.
 
Benutzer-Profile anzeigen Private Nachricht senden

kanonenfutter



Anmeldungsdatum: 10.09.2004
Beiträge: 266

BeitragVerfasst am: 11. Jun 2005 17:17   Titel:

ok, du bist also mit meinem vorschlag einverstanden. damit würde das skript so aussehen (beachte: ich lasse die prüfung, ob die datei existiert weg, da diff das sowieso auch prüft).
Code:
#!/bin/bash
cd TEST/SICHERUNG

for file in *.tes; do

    # gleiche dateien in beiden pfaden?
    if diff -q $file ../$file > /dev/null; then

        # Erzeuge neuen Namen aus $file und ersetze ".tes" durch ""
         newname="${file%.tes}.sic"
         mv "$file" "$newname"
    fi
done

oder wenn es etwas kürzer sein soll:
Code:
#!/bin/bash
cd TEST/SICHERUNG

for file in *.tes; do

    diff -q $file ../$file > /dev/null && mv "$file" "${file%.tes}.sic"

done

_________________
"Email und Internet haben gemeinsam, dass sie beide in HTML geschrieben sind" (Peter Huth, TV-Computerexperte). Zitiert nach http://www.antihuth.de/
 
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen

Beiträge vom vorherigen Thema anzeigen:   
     Pro-Linux Foren-Übersicht -> Programmieren - Allgemein Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehen Sie zu:  

Powered by phpBB © phpBB Group
pro_linux Theme © 2004 by Mandaxy