Schrift
[thread]9046[/thread]

Neueste Datei in einem Verzeichnis finden (Seite 2)

Leser: 2


<< |< 1 2 >| >> 15 Einträge, 2 Seiten
krusty
 2007-05-30 11:33
#77046 #77046
User since
2006-01-27
91 Artikel
BenutzerIn
[default_avatar]
Vielen Dank, funktioniert einwandfrei.
Dubu
 2007-05-31 02:21
#77047 #77047
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
[quote=betterworld,29.05.2007, 15:39]
Code: (dl )
find . -mindepth 1 -maxdepth 1 -printf '%T@ %p\n' | sort -nr | head -1 | sed 's/^[^ ]* //'

*duck*
[/quote]
Etwas overkill, oder?

Code: (dl )
ls -t | head -1
Dubu
 2007-05-31 02:42
#77048 #77048
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
[quote=vayu,29.05.2007, 15:53]
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
my $dir = "verzeichnis";

my $latest = (
   map{
       $_->[0]
   }
   sort{
       $a->[1] <=> $b->[1]
   }
   map{
       [$_, -M $_]
   }
   grep {
       -f $_
   }
   glob(
        $dir."*"))[0];
   
print $latest;
[/quote]

Mir ist etwas unwohl dabei, eine Liste komplett zu sortieren, wenn man nur das größte oder kleinste Element sucht. Obwohl die Schwartzsche Transformation immer wieder cool aussieht, täte es hier vielleicht auch eine simple, kleine Schleife, wie man sie so ähnlich (und damit ziemlich "un-perlisch") auch in C machen würde ...
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#!/usr/bin/perl
use strict;
use warnings;

my $dir = '/home/harald';

my ($newest_file, $newest_date);
for my $entry (glob "$dir/*") {
   next unless -f $entry;
   if (!defined $newest_date || -M $entry < $newest_date) {
       $newest_date = -M $entry;
       $newest_file = $entry;
   }
}
if (defined $newest_file) {
   print "Newest: $newest_file\n";
} else {
   print "No files found";
}
ptk
 2007-05-31 09:54
#77049 #77049
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Genau. O(n) vs. O(n log n).
betterworld
 2007-05-31 21:26
#77050 #77050
User since
2003-08-21
2613 Artikel
ModeratorIn

user image
[quote=Dubu,31.05.2007, 00:21][quote=betterworld,29.05.2007, 15:39]
Code: (dl )
find . -mindepth 1 -maxdepth 1 -printf '%T@ %p\n' | sort -nr | head -1 | sed 's/^[^ ]* //'

*duck*
[/quote]
Etwas overkill, oder?

Code: (dl )
ls -t | head -1
[/quote]
Da hast Du recht.. auf die einfache Loesung bin ich nicht gekommen :) (Hatte wohl gerade ziemliche Knoten im Hirn)\n\n

<!--EDIT|betterworld|1180632717-->
<< |< 1 2 >| >> 15 Einträge, 2 Seiten



View all threads created 2007-05-29 16:17.