Dateien über Unterverzeichnisse hinweg nach Datum sortiert

oglimmer

Aktives Mitglied
Thread Starter
Registriert
16.11.2004
Beiträge
1.262
Hi,

weiß jemand wie ich im Terminal alle Dateien über Unterverzeichnisse hinweg nach Datum sortiert anzeigen kann.

Ich will nicht Spotlight verwenden, es soll ein im Terminal sein!

Gruß
Oli

(für Dateigröße habe ich das: "du -a | sort -n | tail -n 25", so einfach scheint es mir aber für nach Datum nicht zu sein)
 

oglimmer

Aktives Mitglied
Thread Starter
Registriert
16.11.2004
Beiträge
1.262
Da war ich wohl etwas zu früh mit posten.

Habe das bei Google gefunden und es macht genau das was ich möchte.

Wenn jemand noch kürzere Lösungen hat => her damit.
 

MacMännchen

Aktives Mitglied
Registriert
03.10.2006
Beiträge
2.881
wie wär's mit:

Code:
ls -alTR | awk '{print $9,$6,$7,$8,$10}' | sort


edit: nicht ganz, aber fast :)
 

MacMännchen

Aktives Mitglied
Registriert
03.10.2006
Beiträge
2.881
@oglimmer
ist mit 'nem Einzeiler wohl kaum möglich.
Auch die Lösung von josh targownik (dein Link) liegt knapp daneben ;)
 

oglimmer

Aktives Mitglied
Thread Starter
Registriert
16.11.2004
Beiträge
1.262
Wieso geht denn die Lösung aus dem Link nicht?

Bei meinem Tests hat es eigentlich gut geklappt.

Ich habe diese Lösung getestet:
PHP:
#!/bin/sh 
#no bells&whistles, this just takes ls -l output, reformats it slightly, 
#and sorts the result fron newest to oldest; old files for which ls -l 
#gives year rather than time all show 00:00 time 
# 
ls -lR "$@" | 
awk 'BEGIN { m = "Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec" 
  "date +%Y" | getline yyyy; close("date +%Y") 
  "date +%b" | getline mmm;  close("date +%b") 
  mi = monthnum(mmm) 
  fmt = "%s %4d %-12s %-12s %12d %4d/%02d/%02d %s %s\n" 
  bfn = "[^ ]+ +[0-9]+ +[^ ]+ +[^ ]+ +[0-9]+ +(" m ") +[0-9]+ +[0-9:]+ +" 

} 

/^total/ || /^ *$/ { next } 
/:$/ { sub(/:$/, "/"); sub("//$", "/") ; d = $0; next } 
{ match($0, bfn); fn = d substr($0, RSTART + RLENGTH) 
  mn = monthnum($6) 
  if (length($8) == 4) 
    printf(fmt, $1, $2, $3, $4, $5, $8, mn, $7, "00:00", fn) 
  else 
    printf(fmt, $1, $2, $3, $4, $5, yyyy-(mn<=mi?0:1), mn, $7, $8, fn) 
} 

function monthnum(s) { return int((index(m, s) + 3) / 4) }' | 
sort -r +5
 

MacMännchen

Aktives Mitglied
Registriert
03.10.2006
Beiträge
2.881
oglimmer schrieb:
Wieso geht denn die Lösung aus dem Link nicht?

Das Skript meinte ich nicht. Ich glaube schon, dass es funzt, werde es auch bei Gelegenheit testen.

Ich dachte an den Einzeiler, der im letzten Post von josh targownik vorgeschlagen wurde:

Code:
ls -l `find .|xargs` | cut -c43-200 | sort -Mr | more

man versucht ja oft, erst mal per Einzeiler das gesuchte Ergebnis zu erhalten, bevor man zu anderen Mitteln greift ;)
 

maceis

Aktives Mitglied
Registriert
24.09.2003
Beiträge
16.880
Ganz schön umständlich :D.
[Edit:] bezog sich auf #5

Mal abgesehen davon, dass Du nicht angegeben hast, welches Datum Du meinst (Erstellung, letzte Änderung, letzter Zugriff).
Ich geh' mal davon aus, Du meinst das Datum der letzten Änderung.
In der zsh geht dann z.B. sowas:
Code:
stat -f "%m%t%Sm %N" **/* | sort -rn | cut -f2-
 

oglimmer

Aktives Mitglied
Thread Starter
Registriert
16.11.2004
Beiträge
1.262
Ich dachte an das "letzte Änderungsdatum".

Ich habe jetzt die Lösung Maceis probiert, aber ich bekomme (für einen Verzeichnisbaum mit 10 Dateien und 1 Unterverzeichns) nur eine Zeile zurück. Mache ich was falsch?

Aber cool, das Programm stat kannte ich gar nicht.
 
Zuletzt bearbeitet:

oglimmer

Aktives Mitglied
Thread Starter
Registriert
16.11.2004
Beiträge
1.262
stimmt, wer lesen kann ist klar im Vorteil ;)
 

maceis

Aktives Mitglied
Registriert
24.09.2003
Beiträge
16.880
zsh rulez :upten:.
In der bash geht aber folgendes:
Code:
find . -exec stat -f "%m%t%Sm %N" {} \; | sort -rn | cut -f2-
 

oglimmer

Aktives Mitglied
Thread Starter
Registriert
16.11.2004
Beiträge
1.262
Damit geht der Shell-Award des Tages an Maceis

**applaus**

Super, das ist die Lösung die mir wirklich gefällt. Man kann dann vorallem so schön dem find ein -type f dazu geben.
 

maceis

Aktives Mitglied
Registriert
24.09.2003
Beiträge
16.880
oglimmer schrieb:
...
Man kann dann vorallem so schön dem find ein -type f dazu geben.
Das kann die zsh ohne 'find' Kommando (und einfacher):
Code:
stat -f "%m%t%Sm %N" **/*(.) | sort -rn | cut -f2-
:D
 

oglimmer

Aktives Mitglied
Thread Starter
Registriert
16.11.2004
Beiträge
1.262
Man sieht ich habe von ksh keine Ahnung....

(und auch an der bash ist mein Wissen beschränkt, aber für den Hausgebrauch reichts ;) )
 
Oben Unten