Datei erkennen und umbennen
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
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
Bei kleinen Dateien geht das schnell. Bei größeren wird man vielleicht einen einfacheren checksum-Algorithmus verwenden wollen.
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.
Code: Select all
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
http://www.prolinux.de/forum/viewtopic.php?t=1028739
nachlesen kannst.
-
- Posts: 266
- Joined: 10. Sep 2004 14:37
- Contact:
@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".
> 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/
-
- Posts: 266
- Joined: 10. Sep 2004 14:37
- Contact:
@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
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:
> 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
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: Select all
if diff -q $file SICHERUNG/$file; then
Last edited by kanonenfutter on 11. Jun 2005 17:45, edited 1 time in total.
"Email und Internet haben gemeinsam, dass sie beide in HTML geschrieben sind" (Peter Huth, TV-Computerexperte). Zitiert nach http://www.antihuth.de/
-
- Posts: 266
- Joined: 10. Sep 2004 14:37
- Contact:
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).
oder wenn es etwas kürzer sein soll:
Code: Select all
#!/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
Code: Select all
#!/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/