PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Dateien eines bestimmten zeitraumes finden



meinereinerseiner
28-08-2001, 20:20
hi,

ich suche ein script, welchen ich einen
bestimmten zeitraum übergebe und welches dann
in einem bestimmten verzeichnis und dessen unterverzeichnis alle dateien dazu findet und diese verschieben tut, ich denke mal find ist ein ansatz, aber wie mache ich das mit dem zeitraum?

der tom

thommy
29-08-2001, 08:36
Um alle Dateien zu finden, die älter als 10 Tage aber maximal 20 Tage alt sind, hilft das:

find /hier_gehts_los -atime +10 -atime -20

Thomas

jgbauman
29-08-2001, 13:29
Vielleicht funktioniert ja folgendes Skript.


#! /bin/bash
DIR=$1
STARTTIME=$2
ENDTIME=$3
shift 3
OPTS=$@

if [ -z $STARTTIME ]; then
echo "usage: "$0" dir starttime endtime [find opts ...]" >&2
echo " endtime defauls to now" >&2
exit 1
fi
NOWSEC=`date +%s`

STARTSEC=`date +%s -d $STARTTIME`
if [ -z $STARTSEC ]; then
exit 1;
fi
if [ $STARTSEC -gt $NOWSEC ]; then
STARTSEC = NOWSEC
echo "warning: starttime is in the future " >&2
fi
STARTMIN=$(( (NOWSEC-STARTSEC) / 60 ))
START="-amin -$STARTMIN"

if [ ! -z $ENDTIME ]; then
if [ $ENDTIME != "now" ]; then
ENDSEC=`date +%s -d $ENDTIME`
if [ -z $ENDSEC ]; then
exit 1;
fi
if [ $ENDSEC -gt $NOWSEC ]; then
ENDSEC = NOWSEC
echo "warning: endtime is in the future " >&2
fi
ENDMIN=$(( (NOWSEC-ENDSEC) / 60 ))
END="-amin +$ENDMIN"
fi
fi
#echo $DIR $START $END $OPTS
find $DIR $START $END $OPTS

folgendermassen zu benutzten:
./timeframe.sh . 2001-08-29 now -maxdepth 1
Achtung: 2001-08-29 bedeutet immer "2001-08-29 00:00".
Also findet:
./timeframe.sh dir 2001-08-28 2001-08-29
Alle Dateien die zwischen "2001-08-28 00:00" und "2001-08-29 00:00" bearbeitet wurden.
Willst Du statt access die creation-time solltes Du aus -amin an beiden Stellen im Skript -cmin machen.

meinereinerseiner
29-08-2001, 14:15
danke, werds heute abend mal testen

meinereinerseiner
29-08-2001, 15:10
hurra - es tut :-)

der tom

meinereinerseiner
29-08-2001, 23:54
naja, kann ich dem auch konkrete zeiten übergeben, z.b

10.08.2001 - 23.08.2001 oder tut das nur mit
absoluten angaben?

der tom