Warum liest eigentlich niemand die Forenbeschreibung *sigh*
Hallo Liebe Shell Experten!
Ich sitze vor einer Aufgabe die ich alleine leider nicht lösen kann (so weit bin ich noch nicht mit shell)
Ich möchte ein Shell script erstellen, das in einen bestimmten Ordner die filenamen prüft und mir einen string mit den sequenzen (von-bis) erstellt.
Ist schwer zu erklären, daher versuche ich es so:
Ich habe einen Ordner in den mehrere dpx (Bilddateie) liegen z.B.:
333.0000005.dpx
333.0000006.dpx
333.0005002.dpx
333.0005003.dpx
333.1112201.dpx
333.1112202.dpx
333.1112203.dpx
jetzt möchte ich, das das shell script diesen Ordner (z.B.333) durchsucht und mir am ende folgenden String ausgibt:
0000005-0000006,0005002-0005003,1112201-1112203
also immer "von-bis","von-bis",...
habt Ihr vielleicht eine Lösung für mich?
Ich wäre euch unendlich dankbar, da dies meinen Arbeitsaufwand unglaublich verringern würde.
Schönen Gruß
Mike
Warum liest eigentlich niemand die Forenbeschreibung *sigh*
Je größer der Deppenfaktor, desto gigantischer das Bescheidwissergefühl
-Dieter Nuhr
Man ist ja dynamisch.
Ausgangssituation...Code::~/test$ ls 333.0000005.dpx 333.0000006.dpx
Jetzt wird´s heikel.Code:ls | sed -e r/' '/\n/g | cut --delimiter='.' --fields=2 0000005 0000006
Muss ich mir was überlegen für, ansonsten ab hier weiter in PHP.
ecit: --
Sorry, ab hier wird´s für mich zu einem zu großen Aufwand.
edit2:--
Das ganze kann man auch mit Shellscripts machen ( also test oder [] ) aber mit PHP geht´s für mich einfacher. Also nutz z.B. das PHP CLI Interface.
So, das ist ungestet und im nicht kontext sensitiven modus. Logik sollte klar sein und kannst es von heir aus auch in Shellscript umsetzen. Oder halt in PHP mit cronjob und cli - was auch immer... Blubb.PHP-Code:$result=exec('ls <PFAD> | sed -e r/' '/\n/g | cut --delimiter='.' --fields=2')
$result=split("\n",$result);
for ($i=0;$i<sizeof($result),$i++)
{
if ($result[$i]==($result[$i+1])+1)
{ if ($chain===TRUE) ; else {
$chain=TRUE; $first_in_chain=$result[$i];
// Beginn einer Kette halten wir fest.
} } else
{
if ($chain===TRUE)
{
unset ($chain); $finales_ergebnis[]=$first_in_chain.'-'.$result[$i-1].',';
}
else $finales_ergebnis[]=$result[$i].',';
}
}
![]()
Geändert von Angelmaker (12.06.2007 um 12:23 Uhr)
Ich habe keine Signatur. Dieser Satz kein Verb.
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)