PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Ausgabe der 5 neusten Dateien



swen1
18.06.04, 14:54
Hallo,

ich möchte gern die 5 neuesten Dateien aus einem Verzeichnis mit Unterordnern angezeigt bekommen.

So richtig find ich da mit ls und grep keine Lösung.
Hoffe Ihr habt da nen Tip!

Danke
Gruß Swen

3qualizer
18.06.04, 15:16
Wenn die Dateien z.B. keine Leerzeichen enthalten, würde das hier gehen:

find -type f | xargs ls -ltr | tail -n5
hmm mit Leerzeichen... *sucht weiter*

Hun
18.06.04, 16:20
ungetestet
tail -n5 $(xargs ls -ltr $(find -type f))

swen1
18.06.04, 16:36
Danke für die Antworten!!

Das Beispiel von 3qualizer funktioniert einwandfrei, nur eben leider nicht wenn Dateien mit Leerzeichen dabei sind. Das hab ich aber leider, und wenn da jemand eine Lösung hätte, wäre ich sehr dankbar!! Hun's Befehl sieht ja sehr ähnlich aus, funktioniert bei mir aber leider nicht.

Werd mal weiter probieren.

Gruß Swen

Jasper
18.06.04, 17:04
Das Beispiel von 3qualizer funktioniert einwandfrei, nur eben leider nicht wenn Dateien mit Leerzeichen dabei sind. Das hab ich aber leider, und wenn da jemand eine Lösung hätte, wäre ich sehr dankbar!! Hun's Befehl sieht ja sehr ähnlich aus, funktioniert bei mir aber leider nicht.

Werd mal weiter probieren.


wie siehts damit aus:

find -type f print0 | xargs -0 ls -ltr | tail -n5


-j

swen1
18.06.04, 19:46
wie siehts damit aus:

find -type f print0 | xargs -0 ls -ltr | tail -n5


-j

Also das sieht wirklich schon super aus!! Ein kleines Problemchen ist noch, ls sortiert die Dateien verzeichnisweise. Das heißt, ich bekomme nur die Dateien des letzten Verzeichnisses ausgegeben. Habe gerade bestimmt ne Stunde alle Optionen von ls durchprobiert. Hab leider noch keine Lösung gefunden.

Gruß Swen

swen1
23.06.04, 07:40
Hallo,

ich muss nochmal nerven. Irgendwie bin ich zu blöd, bekomme das einfach nicht hin. Hab nun weiter mit find, awk und sort probiert, aber das klappt alles nicht.

Wenn da noch wer ne Idee hat (und wenns nur ein Programm ist, was mir weiterhelfen könnte), wäre ich sehr dankbar!

Gruß Swen

marcdevil
23.06.04, 07:56
ls -tF |grep -v / | head -5
zeigt die 5 neuesten Dateien in einem Verzeichniss mit Unterverzeichnissen, ohne diese zu berücksichtigen.

wenn man mag kann man bei ls noch ein -l dazuschreiben, für detailierte infos.

unter berücksichtigung der dateien in den unterverzeichnissen:
für den jetzigen Monat:
ls -lFR --full-time | grep -v / | grep `date '+%m.%Y'` | sort -k 6 | head -5

für einen anderen Monat (Januar 2004):
ls -lFR --full-time | grep -v / | grep 01.2004 | sort -k 6 | head -5

swen1
23.06.04, 09:40
Danke marcdevil, hast mir sehr geholfen.

Ich brauche aber eben immer die letzten 5 Dateien, also auch wenn im aktuellen Monat nix angelegt wurde.

Hab das jetzt so gelöst:
find -type f -print0 | xargs -0 ls -lFRr --full-time | sort -r +5 | head -5

um das in einer ordentlichen Form auszugeben, hab ich noch ein:
| awk '{print $6 " " $9 " " $10 " " $11 " " $12}'

wobei alles hinter $9 nur für eventuelle Dateien mit Leerzeichen ist. Wenn dafür noch jemand ne Lösung kennt? Ansonsten klappt das so scheinbar.

Dank Euch !

Jasper
23.06.04, 17:27
find . -type f -printf '%T@ %p\n' | sort -nr -k1 | head -5 | cut -d" " -f2

statt der kombo 'head+cut' kann man auch 'awk {if(NR <= 5) print $2}' verwenden.
das format der ausgabe lässt sich beliebig durch das printf steuern.

-j

swen1
24.06.04, 07:30
find . -type f -printf '%T@ %p\n' | sort -nr -k1 | head -5 | cut -d" " -f2

statt der kombo 'head+cut' kann man auch 'awk {if(NR <= 5) print $2}' verwenden.
das format der ausgabe lässt sich beliebig durch das printf steuern.

-j
Vielen Dank !!!

Jetzt hab ich das printf von find auch endlich verstanden.

Gruß Swen