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

 Zurück zu Pro-Linux   Foren-Übersicht   FAQ     Suchen    Mitgliederliste
Bash: Dateien finden und leeren

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



Anmeldungsdatum: 13.04.2004
Beiträge: 3
Wohnort: Brandenburg

BeitragVerfasst am: 13. Apr 2004 13:11   Titel: Bash: Dateien finden und leeren

Hallo.

Habe ein Problem mit einem kleinem Script zur Sicherung von Dateien. Als erstes werden aus dem Ordner (orginale) die zu suchenden Dateien in einen zweiten Ordner (Sicherung) kopiert. Dann werden die orginalen Dateien umbenannt (das Datum wird am Dateinamen angehängt). Bis hier hin klappt alles ohne Probleme. Und nun sollen die orginalen Dateien auch noch geleert werden, aber irgendwie gelingt es mir nicht in Verbindung mit dem Befehl >find< . Wer kann mir bei meiner Problematik einen Tipp geben. Oder hat eventuell jemand einen anderen Lösungsansatz. Hier das bisherige Script.

#!/bin/bash
# finde im Verzeicniss Scans/orginale alle dateien älter 3 Tage und kopiere diese
# mit Pfadangabe ins Verzeichniss /Scans/sicherung/
find /Scans/orginale/ -name '*' -mtime +3 -exec cp -a --parents {} /Scans/sicherung/ \;

# kopiere aus dem Verzeichnis /Scans/sicherung/Scans/orginale/ den gesamten
# Inhalt ins verzeichnis /Scans/sicherung/
cp -R -a /Scans/sicherung/Scans/orginale/* /Scans/sicherung/

# lösche den Ordner Scans, im Verzeichnis /Scans/sicherung/
rm -r /Scans/sicherung/Scans/

# jetzt sind alle dateien älter 3 Tage, aus dem Ordner Orginale, im Ordner
# sicherung --- inkl. Verzeichnisbaum und Dateiattribute

############################Ende Sicherung#################################

# Eine Variable Daum wird gesetzt
DATUM=$(date +'%d_%m_%Y')

# finde im Verzeicniss Scans/orginale alle dateien älter 3 Tage und fuege
# an den Dateinamen das Datum an
find /Scans/orginale/ -name '*' -mtime +3 -exec mv {} {}.$DATUM \;

###########################Ende Umbenennen#################################

# finde im Verzeicniss Scans/orginale alle dateien älter 3 Tage und leere diese
find /Scans/orginale/ -name *.$DATUM -mtime +3 -exec > {} \;
# ENDE


Der jetzige Befehl zum Leeren der Dateien, erzeugt eine leere Datei mit den Namen "{}" in dem Verzeichnis in dem ich das Script ausführe.
Setze ich diesen Befehl ein,
find /Scans/orginale/ -name *.$DATUM -mtime +3 -exec echo "x" > {} \;
dann erzeugt es mir wieder eine Datei mit den Namen "{}", in der so viele x'se stehen wie es Dateien gibt, die mit dem Suchmuster übereinstimmen.

Danke im Vorraus
 
Benutzer-Profile anzeigen Private Nachricht senden

jochen
prolinux-forum-admin


Anmeldungsdatum: 14.01.2000
Beiträge: 699
Wohnort: Jülich

BeitragVerfasst am: 13. Apr 2004 13:33   Titel: Jochen

Einfach ein "cp /dev/null {} \;" als Argument zum letzten -exec angeben, weil sonst die Original-Shell das ">" interpretiert, bevor find es in die Finger kriegt. Und ob find was damit anfangen kann, würde ich auch noch bezweifeln. Allerdings habe ich es jetzt nicht ausprobiert.

Die cp/rm-Kombi oben (2./3. Kommando) würde ich durch ein einziges mv erledigen.

Jochen
_________________
Die grösste Lüge der EDV? "Mal eben..."
 
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen

jochenz



Anmeldungsdatum: 13.04.2004
Beiträge: 3
Wohnort: Brandenburg

BeitragVerfasst am: 13. Apr 2004 13:50   Titel:

Danke, funktioniert wunderbar.
 
Benutzer-Profile anzeigen Private Nachricht senden

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