Anzeige Dateinamen und "nur" letzte Änderungszeit?!

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von steakley, 06.03.2008.

  1. #1 steakley, 06.03.2008
    steakley

    steakley Grünschnabel

    Dabei seit:
    06.03.2008
    Beiträge:
    2
    Zustimmungen:
    0
    Hallo, ihr Cracks,

    ich bastle gerade an einem Script und komme nicht weiter. Ich möchte in eine Datei die Files eines Verzeichnisses pipen. Hinter dem Dateinamen soll aber noch die letzte Änderungszeit erscheint, und zwar nur die (also Datum und Zeit). Die anderen Informationenn, wie Größe etc. möchte ich nicht in der Datei sehen. Ich benutze HP-UX und die bash-Shell. Kann mir jemand einen Tipp geben?!

    Viele Grüße,
    steakley
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 Gott_in_schwarz, 06.03.2008
    Gott_in_schwarz

    Gott_in_schwarz ar0

    Dabei seit:
    22.04.2007
    Beiträge:
    546
    Zustimmungen:
    0
    Ort:
    Niedersachsen
    also das sollte man bereits mit einer kombination aus ls und awk hinbekommen.


    also mini-crashkurs awk: awk ließt zeile für zeile einer datei (oder von stdin) ein und 'splittet' die ausgabe in felder, nämlich in spalten. spalte eins ist dann in der variable "$1", die spalte 2 in "$2" etc. die komplette zeile steckt in "$0". wobei die spalten per default durch leerzeichen getrennt sind.
    Code:
    ls -l /bin
    gibt bei mir sowas aus: (auszug)
    Code:
    -rwxr-xr-x 1 root root  701680 2007-10-05 16:37 bash*
    -rwxr-xr-x 1 root root   25448 2007-10-05 15:41 bunzip2*
    -rwxr-xr-x 1 root root   25448 2007-10-05 15:41 bzcat*
    lrwxrwxrwx 1 root root       6 2008-01-27 02:11 bzcmp -> bzdiff*
    -rwxr-xr-x 1 root root    2128 2007-10-05 15:41 bzdiff*
    also befindet sich das änderungsdatum in den spalten 6 und 7.
    Code:
    ls -l /bin|awk '{print $6, $7}'
    gibt also nur das änderungsdatum an. (in den meisten zeilen, in der ersten zeile ("total 161332") zb nicht. aber da ist ja auch keine datei drin...)

    wenn du jetzt nur "normale" dateien haben willst, könntest du das mit dem überprüfen des jeweils ersten zeichens in der zeile tun: ist es ein "-" ist es eine normale datei, ist es ein "l" ein link, ist es ein "d" ein directory etc.
    Code:
    ls -l /bin|awk '{if ($0 ~ /^-/) {print $6, $7}}'
    wobei ich mir nicht sicher bin, obs da nicht vielleicht ausnahmen gibt.

    deswegen kannst du einfach mit find nach dateien in einem verzeichnis suchen:
    Code:
    find /bin -type f -exec ls -l {} \;
    type f steht für "type file", imho selbsterklärend. das exec kann verwendet werden, um auf die gefundenen dateien befehle anzuwenden. wobei die aktuelle datei mit "{}" repräsentiert wird. der exec befehl wird mit einem semicolon terminiert, welches wir hier mit einem backslash escapen müssen, damit die shell (hier also die bash) es nicht interpretiert... (ist ja in der bash der kommandoseparator...)
    den find befehl kannst du dann natürlich direkt in awk pipen, aber eine schleife ist imho sinnvoller:
    Code:
    touch outputFile
    for file in $(find /bin -type f -exec echo "{}" \;); do
       changeDate="$(ls -l "$file"|awk '{print $6, $7}')"
       echo "$file $changeDate" >> outputFile
    done
    das funktioniert allerdings nur, wenn keine leerzeichen im dateinamen vorkommen...
     
  4. #3 steakley, 06.03.2008
    steakley

    steakley Grünschnabel

    Dabei seit:
    06.03.2008
    Beiträge:
    2
    Zustimmungen:
    0
    Puuuh, Hammer! Vielen Dank für die awk-Einführung und die Mühe, die du dir gemacht hast :o). Werde es jetzt mal nach und nach durchgehen und "verstehen" und testen.

    DANKE jedenfalls!
     
Thema:

Anzeige Dateinamen und "nur" letzte Änderungszeit?!

Die Seite wird geladen...

Anzeige Dateinamen und "nur" letzte Änderungszeit?! - Ähnliche Themen

  1. Mit Coreutils 8.24 erhält dd eine Statusanzeige

    Mit Coreutils 8.24 erhält dd eine Statusanzeige: Der Unix-Befehl dd erhält mit der neuesten Version 8.24 des Pakets Coreutils eine eigene Fortschrittsanzeige. Bisher dienten dazu externe Scripte....
  2. Newsbot aus "Neue Beiträge anzeigen" ausnehmen

    Newsbot aus "Neue Beiträge anzeigen" ausnehmen: Hallo, ich war längere Zeit weg hab aber immer wieder mal hereingeschaut und dabei viel mir folgendes auf. Wenn ich mir neue Beiträge anschauen...
  3. Kritik: Werbeanzeigen im Thread

    Kritik: Werbeanzeigen im Thread: Hallo Admin, warum werden Werbeanzeigen hier so dargestellt, dass diese so aussehen, als wären sie eine Forumantwort von einem menschlichen...
  4. Kaum Bildschirm/Anzeige Einstellmöglichkeiten

    Kaum Bildschirm/Anzeige Einstellmöglichkeiten: Hallöchen Ich habe nach langer Zeit wieder mal zu Kubuntu 14.04 gewechselt :) Nun versuche ich seit Stunden Anzeige nach Wünschen zu...
  5. Einen einzelnen Datensatz mit Xml anzeigen

    Einen einzelnen Datensatz mit Xml anzeigen: Einzelnen Datensatz mit XML anzeigen lassen Hi, ich überlege ob ich bei meinem Anwendungsfall xml verwenden kann. Dafür ist es aber notwendig...