• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Datei aus Ordnern in eine Datei schreiben mit Formatierung

mehlbox

Newbie
Hallo zusammen,

es gibt einen Ordner "test" mit Unterordnern "firma1" und "firma2". In diesen Unterordnern befinden sich blablabla.old Dateien. Wenn diese älter als 30 Tage sind, will ich diese einmal wöchentlich löschen mit dem folgenden Script:

cd /test
find . -mtime +30 -name "*.old" -exec rm -v / {} \;

Doch bevor ich die Dateien entgültig lösche, sollen sie in eine Datei "xy" mit folgendem Format geschrieben werden, damit ich auch noch in 4 Wochen schauen kann ob ich diese gelöscht habe oder die Datei nie angelegt wurde. Die Datei soll den Namen xy_"Löschdatum" erhalten und bei jedem Löschvorgang erzeugt werden.

Datum der Datei old;Uhrzeit der Datei old ;Name der Datei;Größe der Datei old; wichtig ist das es so aussieht auch mit den Semikolons dann kann ich die Datei als csv Datei in Excel öffnen!!

So soll es in die Datei geschrieben werden

20060119;075521;blabla.old;6464646;
20060120:083221;blabla.old:3412422;

Ich weiss leider nicht wie ich das mit meinem Kenntnissen hinbekommen soll aber soll bitte ein Script sein.

Hoffe habe mich verständlich ausgedrückt??

Vielen Dank

Mehlbox
 

anlo

Newbie
Hallo

man echo.

Code:
$ F="foo" G="bar" H="foobar" ; echo "$F;$G;$H"
foo;bar;foobar
und jetzt F, G und H passend mit Deinen Infos füllen, dann die Ausgabe in eine Datei umleiten

Code:
echo "foo" > datei
bzw.
Code:
echo "foo" >> datei

> und >> siehe man bash, das eine schreibt in die Datei von Anfang und löscht den Rest, das 2. hängt an
 
cd /test

find . -mtime +30 -name "*.old" -type f -print | while read name
do
echo "schreibmichwech" > /tmp/history
rm -v {}
done

Und "schreibmichwech" mit deinen Daten füttern.

Haveaniceday
 
A

Anonymous

Gast
hi,
wenn ich Dein ansinnen richtig verstanden habe ???
als einfache commandline
Code:
fidana=`date +%Y%m%d%H%M%S`;for a in `find . -mtime +30 -name "*.old"`;do echo `stat -c%z "$a"|cut -f1 -d" "|sed -e 's/-//g'`";"`stat -c%z "$a"|cut -f2 -d" "|cut -f1 -d"."|sed -e 's/://g'`";"`basename \`stat -c%n "$a"\``";"`stat -c%s "$a"`";" >> xy_"$fidana"&&rm -f $a;done;unset fidana
und als script
Code:
#!/bin/sh
fidana=`date +%Y%m%d%H%M%S`
for a in `find . -mtime +30 -name "*.old"`
         do 
         echo `stat -c%z "$a"|cut -f1 -d" "|sed -e 's/-//g'`";"`stat -c%z "$a"|cut -f2 -d" "|cut -f1 -d"."|sed -e 's/://g'`";"`basename \`stat -c%n "$a"\``";"`stat -c%s "$a"`";" >> xy_"$fidana"&&rm -f $a
done
loescht aber nur dateien und keine SubDir

Natuerlich alles ohne gewaehr :lol: weil untestet

Mƒg ®êïñï
 

Morlon

Member
Hi,
habs mal nen bissl angepasst zwecks Leerzeichen in Dateinamen und nur Dateien. Falls es dir wichtig ist, in welchem der 2 Verz. die Dateien waren, dann einfach das basename durch echo ersetzen.

Code:
cd /test;fidana=`date +%Y%m%d%H%M%S`;find . -mtime +30 -type f -name "*.old"|while read a;do echo `stat -c%z "$a"|cut -f1 -d" "|sed -e 's/-//g'`";"`stat -c%z "$a"|cut -f2 -d" "|cut -f1 -d"."|sed -e 's/://g'`";"`basename "$a"`";"`stat -c%s "$a"`";" >> xy_"$fidana"&&rm -vf $a;done;unset fidana

Code:
#!/bin/sh
cd /test 
fidana=`date +%Y%m%d%H%M%S` 
find . -mtime +30 -type f -name "*.old"|while read a 
         do 
		echo `stat -c%z "$a"|cut -f1 -d" "|sed -e 's/-//g'`";"`stat -c%z "$a"|cut -f2 -d" "|cut -f1 -d"."|sed -e 's/://g'`";"`basename "$a"`";"`stat -c%s "$a"`";" >> xy_"$fidana"&&rm -vf $a 
done

MfG

edit: Ups doch direkt das "nur Dateien" vergessen, sonst schreibt er dir jedesmal die 2 Verzeichnisse als Datei mit rein.
 
A

Anonymous

Gast
genau,
und theoretisch koenntest
sagen
Code:
wobinichmerkvariable=`pwd`
cd /test
der 
rest
von script
cd $wobinichmerkvariable
Mƒg ®êïñï
 
Oben