Bash: Zeit des letzten Zugriffs auf eine Datei
Hallo *, ich suche einen Befehl der mir sagt wann zuletzt auf eine Datei zugegriffen wurde. (Sowas wie der Befehl "touch", nur daß ich keine Zeit verändern, sondern nur abfragen möchte.) Bin wie immer für jede Idee dankbar. Ralph
* Ralph Müller schrieb am 22.Mär.2002:
ich suche einen Befehl der mir sagt wann zuletzt auf eine Datei zugegriffen wurde. (Sowas wie der Befehl "touch", nur daß ich keine Zeit verändern, sondern nur abfragen möchte.)
ganz einfach: ls speziell ls -l wenn der letzte schreibende Zugriff gemeint ist und ls -lu wenn der letzte lesende Zugriff gemeint ist. Und ls -lc zeigt die Zeit der letzten Änderung der I-Node. man ls Bernd -- Alle meine Signaturen sind rein zufällig und haben nichts mit dem Text oder dem Schreiber zu tun, dem ich antworte. Falls irgendwelche Unrichtigkeiten dabei sein sollten, so bedauere ich das. Es wäre nett, wenn Du mich benachrichtigen würdest. |Zufallssignatur 0
Moin,
* Bernd Brodesser
* Ralph Müller schrieb am 22.Mär.2002:
ich suche einen Befehl der mir sagt wann zuletzt auf eine Datei zugegriffen wurde. (Sowas wie der Befehl "touch", nur daß ich keine Zeit verändern, sondern nur abfragen möchte.) ganz einfach: ls
speziell ls -l wenn der letzte schreibende Zugriff gemeint ist und ls -lu wenn der letzte lesende Zugriff gemeint ist. Und ls -lc zeigt die Zeit der letzten Änderung der I-Node. Warum gibt's dann noch --time=atime? Und warum lese ich die Manpage nicht bis zum Ende?
Thorsten -- Don't let your sense of morals prevent you from doing what is right. - Isaac Asimov
* Thorsten Haude schrieb am 22.Mär.2002:
* Bernd Brodesser
[02-03-22 18:40]: * Ralph Müller schrieb am 22.Mär.2002:
ich suche einen Befehl der mir sagt wann zuletzt auf eine Datei zugegriffen wurde. (Sowas wie der Befehl "touch", nur daß ich keine Zeit verändern, sondern nur abfragen möchte.)
ganz einfach: ls
speziell ls -l wenn der letzte schreibende Zugriff gemeint ist und ls -lu wenn der letzte lesende Zugriff gemeint ist. Und ls -lc zeigt die Zeit der letzten Änderung der I-Node.
Warum gibt's dann noch --time=atime? Und warum lese ich die Manpage nicht bis zum Ende?
GNU-Programe haben neben den Üblichen UNIX-Options noch eine Langform. Die ist zum eingeben viel zu umständlich, aber in shellskripten machen die sich besser, da man sofort sieht, was da gemacht wird. --time=atime dürfte das gleiche sein wie -u Bernd -- Bei Fragen an die Liste erst mal nachschauen, ob es diese Frage nicht schon einmal gegeben hat. Ein Archiv der Liste findest Du auf: http://lists.suse.com/archives/suse-linux |Zufallssignatur 7
Bernd Brodesser wrote:
* Ralph Müller schrieb am 22.Mär.2002:
ich suche einen Befehl der mir sagt wann zuletzt auf eine Datei zugegriffen wurde. (Sowas wie der Befehl "touch", nur [Lösung mittels ls]
Hallo Bernd, David, Thorsten, alle, vielen Dank für den Tip mit ls. Zwar benutze ich ls recht häufig, doch auf die Idee in diesem Fall ls zu nehmen wäre ich nicht gekommen. :-[ Ich hatte mit "apropos time", "apropos file" (u.ä.) gesucht aber nichts passendes gefunden. Ralph
Hallo, On Fri, 22 Mar 2002, Ralph Müller wrote:
ich suche einen Befehl der mir sagt wann zuletzt auf eine Datei zugegriffen wurde. (Sowas wie der Befehl "touch", nur daß ich keine Zeit verändern, sondern nur abfragen möchte.)
man ls! z.B.: ls -l --time=atime --full-time | awk '{print $6, $7, $8, $9, $10, $11}' -dnh -- "I have never made but one prayer to God^WLinus, a very short one: 'O Lord, make my enemies ridiculous.' And God^WLinus granted it." -- apologies to Voltaire [by Chris Hacking]
Hallo David, * Am 22.03.2002 um 20:12 Uhr schrieb David Haller:
ls -l --time=atime --full-time | awk '{print $6, $7, $8, $9, $10, $11}'
mit <cut> geht's noch ein wenig performanter¹: ls -l --time=atime --full-time | cut -b 44- Nebenbei werden auch Dateinamen mit Leerzeichen vollständig angezeigt ;-) SCNR Jürgen ¹ Hab's mal eben schnell mit '-R $HOME' probiert. -- Um ein Darlehen zu bekommen, muss man erst beweisen, dass man keines braucht. / Registered Linux-User #130804 http://counter.li.org \ \ Linux Stammtisch Bremerhaven http://linux.hs-bremerhaven.de /
Hallo, On Sat, 23 Mar 2002, Juergen Schwarting wrote:
Hallo David,
* Am 22.03.2002 um 20:12 Uhr schrieb David Haller:
ls -l --time=atime --full-time | awk '{print $6, $7, $8, $9, $10, $11}'
mit <cut> geht's noch ein wenig performanter¹:
ls -l --time=atime --full-time | cut -b 44-
$ ls -lc --full-time | cut -b 44- ri Mar 22 18:08:28 2002 [..] ri Mar 22 18:08:22 2002 [..] Fri Mar 22 18:08:16 2002 [..] Nimm nur ne Datei > 100M Bytes ;)
Nebenbei werden auch Dateinamen mit Leerzeichen vollständig angezeigt ;-)
Ah ja, stimmt. Was geht: ls -lc [--full-time] | \ awk '{ i=6; while(i <= NF) { printf("%s ", $i); ++i; }; printf "\n"; }' Fuer ein ls -i muss man aber i mit 7 statt 6 initialisieren. -dnh -- "Don't put off 'till tomorrow, responsibilities. They'll just come back to haunt you. (Ignore them totally)" -- TISM
* David Haller schrieb am 24.Mär.2002:
On Sat, 23 Mar 2002, Juergen Schwarting wrote:
* Am 22.03.2002 um 20:12 Uhr schrieb David Haller:
ls -l --time=atime --full-time | awk '{print $6, $7, $8, $9, $10, $11}'
mit <cut> geht's noch ein wenig performanter¹:
ls -l --time=atime --full-time | cut -b 44-
$ ls -lc --full-time | cut -b 44- ri Mar 22 18:08:28 2002 [..] ri Mar 22 18:08:22 2002 [..] Fri Mar 22 18:08:16 2002 [..]
Nimm nur ne Datei > 100M Bytes ;)
Nebenbei werden auch Dateinamen mit Leerzeichen vollständig angezeigt ;-)
Ah ja, stimmt. Was geht:
ls -lc [--full-time] | \ awk '{ i=6; while(i <= NF) { printf("%s ", $i); ++i; }; printf "\n"; }'
Fuer ein ls -i muss man aber i mit 7 statt 6 initialisieren.
Wenn Du das aber in /dev machst bekommst Du auch Probleme. Eigentlich schon merkwürdig, daß man es kein Programm zu geben scheint, mit dem man einfach das Datum einer Datei erfahren kann. Wenn ich es bräuchte, schriebe ich wahrscheinlich ein kleines C-Programm. Oder perl kann das doch auch. Bernd -- ROTFL = Rolling On The Floor, Laughing = Auf dem Boden wälzen, lachend. SCNR = Sorry, Could Not Resist = Sorry, Ich konte nicht wiederstehen. AFAIK = As Far As I Know = So weit ich weis|BTW = By The Way = Nebenbei bemerkt IMHO = In My Humble Opinion = meiner bescheidenen Meinung nach |Zufallssig. 9
Hallo, On Sun, 24 Mar 2002, Bernd Brodesser wrote:
* David Haller schrieb am 24.Mär.2002:
Ah ja, stimmt. Was geht:
ls -lc [--full-time] | \ awk '{ i=6; while(i <= NF) { printf("%s ", $i); ++i; }; printf "\n"; }'
Fuer ein ls -i muss man aber i mit 7 statt 6 initialisieren.
Wenn Du das aber in /dev machst bekommst Du auch Probleme. Eigentlich schon merkwürdig, daß man es kein Programm zu geben scheint, mit dem man einfach das Datum einer Datei erfahren kann. Wenn ich es bräuchte, schriebe ich wahrscheinlich ein kleines C-Programm. Oder perl kann das doch auch.
Stimmt. 'man 2 stat' bzw. 'perldoc -f stat' ;) Dazu dann noch 'man 3 localtime/gmtime', 'man 3 strftime' bzw. 'perldoc -f localtime/gmtime', und 'perldoc POSIX' ('use POSIX qw(strftime);'). Fuer eine Sprache und Zeitzone ist so ein Wrapper um stat(2) schnell zusammengehackt; aber sicher, mit locales und Zeitzonen ist sowas dann doch mehr Aufwand ;) Waere aber mal ne Idee fuer nen regnerischen Sonntagnachmittag ;) -dnh -- 185: LaTeX Eine spülmaschienenfeste Seitenbeschreibungssprache. (Cornell Binder)
Hallo David, * Am 24.03.2002 um 02:15 Uhr schrieb David Haller:
On Sat, 23 Mar 2002, Juergen Schwarting wrote:
* Am 22.03.2002 um 20:12 Uhr schrieb David Haller:
ls -l --time=atime --full-time | awk '{print $6, $7, $8, $9, $10, $11}'
mit <cut> geht's noch ein wenig performanter¹:
ls -l --time=atime --full-time | cut -b 44-
$ ls -lc --full-time | cut -b 44- ri Mar 22 18:08:28 2002 [..] ri Mar 22 18:08:22 2002 [..] Fri Mar 22 18:08:16 2002 [..]
Nimm nur ne Datei > 100M Bytes ;)
ups, für so große Dateien habe ich überhaupt keinen Platz auf meinem Hobel ;-) Also gut, dann nehmen wir für <ls> noch den Parameter '-h' hinzu und halten somit die Größenangabe auf ein erträgliches Maß. ls -lh --time=atime --full-time | cut -b 44- Die Lösung ist aber immer noch einfacher und performanter als die folgenden Zeilen:
Nebenbei werden auch Dateinamen mit Leerzeichen vollständig angezeigt ;-)
Ah ja, stimmt. Was geht:
ls -lc [--full-time] | \ awk '{ i=6; while(i <= NF) { printf("%s ", $i); ++i; }; printf "\n"; }'
Fuer ein ls -i muss man aber i mit 7 statt 6 initialisieren.
-- "Don't put off 'till tomorrow, responsibilities. They'll just come back to haunt you. (Ignore them totally)" -- TISM
wie wahr, wie wahr... Jürgen -- Diskutiere nie mit einem Irren - die Leute koennten den Unterschied nicht feststellen. / Registered Linux-User #130804 http://counter.li.org \ \ Linux Stammtisch Bremerhaven http://linux.hs-bremerhaven.de /
Moin,
* Ralph Müller
ich suche einen Befehl der mir sagt wann zuletzt auf eine Datei zugegriffen wurde. (Sowas wie der Befehl "touch", nur daß ich keine Zeit verändern, sondern nur abfragen möchte.) ls --time=atime
Thorsten -- Unix is not an 'A-ha!' experience, it is more of a 'Holy shit!' experience. - Colin McFadyen
participants (5)
-
B.Brodesser@t-online.de
-
David Haller
-
Juergen Schwarting
-
Ralph Müller
-
Thorsten Haude