Sämtliche Dateien (+ Unterverzeichnissen) von heute finden

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Sämtliche Dateien (+ Unterverzeichnissen) von heute finden

Beitrag von Duff » 09.03.2006 20:45:59

Hallo,

ich suche nach einer Möglich, mit der ich in einem bestimmten Verzeichnis alle Dateien und Unterverzeichnisse in eine Datei schreiben kann und wo das Datum der Dateien (und der Dateien aus den Unterverzeichnissen) von heute ist.

Die Datei soll dann ungefähr so aussehen:

Datei_Name mit folgendem Inhalt:
datei1.log
datei2.txt
verzeichnis1/datei3.log
....

Habe es mal mit dem find-Befehl

Code: Alles auswählen

find . * -mtime -1
versucht, doch da bekomme ich alles von bis vor 24 Stunden und das ist mir zuviel.

Ich will nämlich anschließend unter unix mit dem Befehl

Code: Alles auswählen

tar -cvf datei.tar -I Datei_Name
alle Dateien vom heutigen Datum in ein tar-file schreiben bzw. erstellen.
Oh, yeah!

Benutzeravatar
H4kk3r
Beiträge: 724
Registriert: 02.01.2006 16:50:51
Wohnort: in der Nähe von Heidelberg

Beitrag von H4kk3r » 09.03.2006 21:13:44

-daystart
Measure times (for -amin, -atime, -cmin, -ctime, -mmin, and
-mtime) from the beginning of today rather than from 24 hours
ago. This option only affects tests which appear later on the
command line.
Gruß, Marcus

„Well done! We did it!“

Debian testing
kernel 2.6.18.3
IBM R50e UR0S5GE

Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Beitrag von Duff » 10.03.2006 09:26:22

Mmh....

erstmal danke für die Antwort, aber leider kann ich nicht wirklich damit was anfangen.
Bekomme es nicht hin, nur alle Dateien von heute anzeigen zu lassen.

Wäre nett, wenn du mir ein Beispiel zeigen könntest.
Danke!
Oh, yeah!

Benutzeravatar
seep
Beiträge: 544
Registriert: 31.10.2004 14:21:08
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: HSK

Beitrag von seep » 10.03.2006 09:36:08

Code: Alles auswählen

find . -type f -daystart -mtime -1 | tar cvf datei.tar -T -
packt alle heute veränderten Dateien ab dem aktuellen Verzeichnis ohne Zwischendatei in die Datei datei.tar. "-T -" sorgt dafür, daß die zu archivierenden Dateien von der Standardeingabe gelesen werden. "-type f" sorgt dafür, daß find nur Dateien findet.

EDIT: Typos

Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Beitrag von Duff » 10.03.2006 18:33:06

Danke.

Unter Linux funktioniert's super. Aber unter unix scheint er -daystart nicht zu kennen.
Die genaue Fehlermeldung kann ich aber leider erst am Monat posten, wenn ich wieder auf der Arbeit bin.
Oh, yeah!

ToPeG
Beiträge: 437
Registriert: 14.04.2004 00:42:06

Beitrag von ToPeG » 10.03.2006 19:28:30

"-daystart" ist nicht bei allen "find"-Implementationen bekannt. Man kann das auch so umgehen.

Code: Alles auswählen

 -mmin `echo \`date +%H\`*60 | bc`
sollte das selbe bewirken wie

Code: Alles auswählen

-daystart -mtime -1

Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Beitrag von Duff » 13.03.2006 08:38:57

Danke, aber funktioniert leider auch nicht.

Der kennt die Option nicht. Es handelt sich um SunOS 5.8.

Errormeldung:

Code: Alles auswählen

find: bad option --mmin
find: path-list predicate-list
Oh, yeah!

ToPeG
Beiträge: 437
Registriert: 14.04.2004 00:42:06

Beitrag von ToPeG » 13.03.2006 17:38:10

Dann wird das ganze ein weing auwändiger.

Versuch mal das:

Erst legst du dieses script an:
today.sh

Code: Alles auswählen

#!/bin/bash

dayh=`date +%H`
daym=`date +%M`
days=`date +%S`
now=`date +%s`
dat=`stat -c "%Y" $1`
z=`echo $now-\(\(\(\($dayh*60\)+$daym\)*60\)+$days\)-$dat | bc`

if [[ $z -gt 0 ]]; then
 exit -1
else
 exit 0
fi
Dann kannst du es in "find" über "-exec" aufrufen:

Code: Alles auswählen

find . -exec today.sh \{\} \; -print
Dann solten nurnoch die Dateien gefunden werden, die heute verändert wurden.

Antworten