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
Bash: Dateien finden und leeren
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 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..."