[Linux] Skript um neuste dateien aufzulisten

Dieses Thema im Forum "Linux & BSD" wurde erstellt von crashkid, 26. Dezember 2007 .

  1. 26. Dezember 2007
    Skript um neuste dateien aufzulisten

    Hallo
    bin auf der Suche nach einem Script was mir die zuletzt erstellten Dateien auflistet.
    Dabei sind mir mehrere Varianten recht.
    zb könnte die Liste jeden Tag automatisch geschrieben werden und in einer Datei namens "NEU_datum.txt" gespeichert werden -

    oder in eine datei die zb alle 2 Stunden akutalisiert wird.

    Zugriff auf den FileServer erfolgt vorwiegend über Samba.

    Geht halt da drum das andere Benutzer nen Überblick haben was neu ist.
     
  2. 28. Dezember 2007
    AW: Skript um neuste dateien aufzulisten

    Schau dir mal das hier an. Musst wohl ein bisschen an dein System anpassen, aber vielleicht hilft dir das ja weiter...

    Code:
    #!/bin/ksh
    # ckdisk_file
    # Die groessten und die neusten Dateien
    
    scriptdir=/scripts
    datadir=/scripts/data
    tmpdir=/scripts/tmp
    PATH=$scriptdir:/usr/sbin/:$PATH
    datum=`date +'%y/%m/%d %H:%M'`
    
    mkdir -p $datadir $tmpdir 2>/dev/null
    
    # Ausgabe-Header und Hilfe-Text
    # =============================
    
    head_big="
    Die groessten Dateien $datum
    ---------------------"
     
    head_new="
    Die neuesten Dateien $datum
    --------------------"
    
    USAGE='
    ckdisk_file 
    Die groessten und die neusten Dateien anzeigen.
    -----------------------------------------------
    ckdisk_file [ -opts] [ arg=val ... ]
    
    Optionen:
    -big Nur die groessten Dateien auflisten.
    -new Nur die neusten Dateien auflisten.
    -h Hilfe: Diesen Text anzeigen.
    -i Info: Info ueber den momentanen Stand.
    
    Argumente:
    size=<n> Minimale Dateigroesse in KB (-big).
    tage=<n> Maximales Alters in Tagen (-new).
    n=<n> Anzahl angezeigter Dateien.
    list=<fs1>,<fs2>,... Liste der Verzeichnisse. 
    '
    
    
    # Die Befehlszeile
    # ================
    
    # Optionen
    # --------
    while [[ "$1" == -* ]]
    do
     [[ "$1" == -big ]] && opt_big=yes && shift && continue
     [[ "$1" == -new ]] && opt_new=yes && shift && continue
     # ----------------------------------------------------------
     [[ "$1" == *h* ]] && echo "$USAGE" && exit
     [[ "$1" == *i* ]] && opt_i=yes
     [[ "$1" == *r* ]] && opt_r=yes
     [[ "$1" == *a* ]] && opt_a=yes
     [[ "$1" == *s* ]] && opt_s=yes
     [[ "$1" == *g* ]] && opt_g=yes
     [[ "$1" == *G* ]] && opt_G=yes
     [[ "$1" == *x* ]] && x11="-x11"
     [[ "$1" == *[iasG]* ]] && opt_erf=yes # Daten erfassen
     shift
    done
    
    # Argumente
    # ---------
    for arg in $* # z.B. list="...." ausfuehren
    do
     [[ "$arg" == *=* ]] && eval $arg
    done
    nlines=$n # n wird zu haeufig benutzt.
    fsize=$size ; unset size # size wird im Grafik-Modul benutzt.
    
    # Default-Funktion
    # ----------------
    if [ ! "$opt_big$opt_new" ] ; then
     opt_big=yes 
     opt_new=yes 
    fi
    
    
    # Noch einige Vorbereitungen 
    # ==========================
    # Alte temporaere Dateien loeschen 
    rm -f $tmpdir/* 2>/dev/null
    
    # Hilfs-Module einlesen
    . alarm
    . grafik
    . selection
    
    # Liste von Rechnern, Filesystemen, Benutzern, ...
    list=`echo "$list" | sed 's/,/ /g'`
    
    # Kein Verzeichnis angegeben? 
    if ! [ "$list" ] ; then
     echo "\nBitte wenigstens ein Verzeichnis angeben.\n"
     echo "$USAGE"
     exit 2
    fi
    
    
    
    # Und nun der Hauptteil
    # =====================
    
    # Die groessten Dateien
    # ---------------------
    if [ "$opt_big" ] ; then
    
     tmpfile=$tmpdir/bigfiles.tmp
     nlines=${nlines:-9999} # Anzahl angezeigter Zeilen
     fsize=${fsize:-100} # Default-Grenze in kB
    
     # Daten erfassen
     # --------------
     if [ "$opt_erf" ] ; then 
     fsize=$((fsize*2)) # find braucht Bloecke
     for dir in $list
     do
     { echo "\nin $dir" 
     find $dir -type f -size +$fsize -exec ls -l {} \; | 
     sort -rn -k 5 | head -$nlines
     } >> $tmpfile
     done
     fi
    
    
     # Info-Report: aktuelle Werte anzeigen
     # ------------------------------------
     if [ "$opt_i" ] ; then
     echo "$head_big"
     cat $tmpfile 
     echo
     fi
    
    fi
    
    
    # Die neusten Dateien
    # -------------------
    if [ "$opt_new" ] ; then
    
     tmpfile=$tmpdir/newfiles.tmp
     nlines=${nlines:-9999} # Anzahl angezeigter Zeilen
     tage=${tage:-7} # Maximales Alter in Tagen
    
     # Daten erfassen
     # --------------
     if [ "$opt_erf" ] ; then 
     for dir in $list
     do
     { echo "\nin $dir" 
     find $dir -type f -mtime -$tage -print > $tmpfile.f 
     if [ -s $tmpfile.f ] ; then
     ls -lt `cat $tmpfile.f` | head -$nlines
     fi
     } >> $tmpfile
     done
     fi
    
    
     # Info-Report: aktuelle Werte anzeigen
     # ------------------------------------
     if [ "$opt_i" ] ; then
     echo "$head_new"
     cat $tmpfile 
     echo
     fi
    
    fi
    

    MfG
    Bernie
     
  3. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.