kleine scripthilfe benötigt

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
instinctless
Beiträge: 110
Registriert: 23.03.2007 11:42:46
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: nähe Hannover
Kontaktdaten:

kleine scripthilfe benötigt

Beitrag von instinctless » 30.09.2009 11:15:25

hi,
folgendes...
eine kamera macht bilder und kopiert diese auf einen server. die namen der bilder tragen sind die entsprechende uhrzeit der aufnahme. ich möchte nun. ich möchte nun bestimmte bilder aussortieren. und zwar das erste in stunde 10, stunde 13 und stunde 16

mein ansatz ist:

Code: Alles auswählen

ls | grep "^10_00$*"
für die bild aus stunde 10.
logischerweise werden mir so aber alle bilder ausgegeben die um 10:00 gemacht wurden, das sind 6 bilder da die cam alle 10 sekunden ein bild macht. ich möchte aber nur das erste.
wie müsste ich mein grep ergänzen um es sinnvoll zu lösen?

Benutzeravatar
hikaru
Moderator
Beiträge: 13932
Registriert: 09.04.2008 12:48:59

Re: kleine scripthilfe benötigt

Beitrag von hikaru » 30.09.2009 11:30:24

Wie wäre es damit?:

Code: Alles auswählen

ls -lt 10_00* | tail -n 1
Eine komplette Beispielausgabe von ls wäre übrigens hilfreicher als eine Prosabeschreibung der Dateien.

Edit:
nicht head sondern tail

Benutzeravatar
Meillo
Moderator
Beiträge: 9254
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: kleine scripthilfe benötigt

Beitrag von Meillo » 30.09.2009 11:34:08

Falls die Zeitstempel nicht mit den Dateinamen übereinstimmen besser nach dem Name sortieren:

Code: Alles auswählen

ls 10_00* | sort | sed 1q
Use ed once in a while!

Benutzeravatar
Meillo
Moderator
Beiträge: 9254
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: kleine scripthilfe benötigt

Beitrag von Meillo » 30.09.2009 11:35:18

hikaru hat geschrieben:Edit:
nicht head sondern tail
oder dem ls ein `-r' übergeben.
Use ed once in a while!

Benutzeravatar
hikaru
Moderator
Beiträge: 13932
Registriert: 09.04.2008 12:48:59

Re: kleine scripthilfe benötigt

Beitrag von hikaru » 30.09.2009 11:38:07

Meillo hat geschrieben:Falls die Zeitstempel nicht mit den Dateinamen übereinstimmen besser nach dem Name sortieren:

Code: Alles auswählen

ls 10_00* | sort | sed 1q
Das geht auch einfacher:

Code: Alles auswählen

ls -l 10_00* | head -n 1
Edit:
D'oh! Hier jetzt head statt tail ;-)

instinctless
Beiträge: 110
Registriert: 23.03.2007 11:42:46
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: nähe Hannover
Kontaktdaten:

Re: kleine scripthilfe benötigt

Beitrag von instinctless » 30.09.2009 11:43:01

danke :-)
head war quasi das was ich gesucht habe.

Benutzeravatar
Meillo
Moderator
Beiträge: 9254
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: kleine scripthilfe benötigt

Beitrag von Meillo » 30.09.2009 12:05:50

hikaru hat geschrieben:
Meillo hat geschrieben:Falls die Zeitstempel nicht mit den Dateinamen übereinstimmen besser nach dem Name sortieren:

Code: Alles auswählen

ls 10_00* | sort | sed 1q
Das geht auch einfacher:

Code: Alles auswählen

ls -l 10_00* | head -n 1
Stimmt, das sort ist (vermutlich) überflüssig.

(Ich bin mir nur nicht sicher ob ls garantiert alphabetisch sortiert ... die Website der SUS ist gerade leider down.)
Use ed once in a while!

chrisbra
Beiträge: 122
Registriert: 19.10.2005 09:36:09
Wohnort: Sachsen-Anhalt
Kontaktdaten:

Re: kleine scripthilfe benötigt

Beitrag von chrisbra » 30.09.2009 12:17:55

Meillo hat geschrieben:(Ich bin mir nur nicht sicher ob ls garantiert alphabetisch sortiert ... die Website der SUS ist gerade leider down.)
Garantiert nicht. Hängt von Deiner Locale ab, IIRC
Meine Whishlist
:wq!

Benutzeravatar
hikaru
Moderator
Beiträge: 13932
Registriert: 09.04.2008 12:48:59

Re: kleine scripthilfe benötigt

Beitrag von hikaru » 30.09.2009 12:22:45

man ls hat geschrieben:NAME
ls - list directory contents

SYNOPSIS
ls [OPTION]... [FILE]...

DESCRIPTION
List information about the FILEs (the current directory by default). Sort entries alphabetically if none of -cftuvSUX nor --sort.

Benutzeravatar
Meillo
Moderator
Beiträge: 9254
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: kleine scripthilfe benötigt

Beitrag von Meillo » 30.09.2009 12:30:04

hikaru hat geschrieben:
man ls hat geschrieben:NAME
ls - list directory contents

SYNOPSIS
ls [OPTION]... [FILE]...

DESCRIPTION
List information about the FILEs (the current directory by default). Sort entries alphabetically if none of -cftuvSUX nor --sort.
ja schon, aber das ist halt die GNU-Implementierung und keineswegs der Standard. ;-)

Ich hätte halt gerne in den SUS geschaut, aber die ist down.

Egal ... es wäre sowieso nur eine pedantische Kleinigkeit gewesen. Und das Problem ist ja auch schon gelöst.
Use ed once in a while!

Benutzeravatar
GoKi
Beiträge: 2068
Registriert: 04.07.2003 23:08:56
Lizenz eigener Beiträge: MIT Lizenz

Re: kleine scripthilfe benötigt

Beitrag von GoKi » 30.09.2009 12:32:55

LC_COLLATE ist dafür zuständig, auch für sort.

Code: Alles auswählen

$ touch A B C D
$ touch a b c d
$ LC_COLLATE=de_DE.UTF-8 ls
a  A  b  B  c  C  d  D
$ LC_COLLATE=C ls
A  B  C  D  a  b  c  d
MfG GoKi
:wq

chrisbra
Beiträge: 122
Registriert: 19.10.2005 09:36:09
Wohnort: Sachsen-Anhalt
Kontaktdaten:

Re: kleine scripthilfe benötigt

Beitrag von chrisbra » 30.09.2009 12:45:05

hikaru hat geschrieben:
man ls hat geschrieben:NAME
ls - list directory contents

SYNOPSIS
ls [OPTION]... [FILE]...

DESCRIPTION
List information about the FILEs (the current directory by default). Sort entries alphabetically if none of -cftuvSUX nor --sort.
Äh ja, und das hilft dir genau wie, wenn vorher schon Globbing stattfindet?
Hängt natürlich trotzdem von $LS_COLLATE ab.
Meine Whishlist
:wq!

Benutzeravatar
hikaru
Moderator
Beiträge: 13932
Registriert: 09.04.2008 12:48:59

Re: kleine scripthilfe benötigt

Beitrag von hikaru » 30.09.2009 13:11:25

chrisbra hat geschrieben:Äh ja, und das hilft dir genau wie, wenn vorher schon Globbing stattfindet?
Sofern man davon ausgeht, dass dabei im Großen und Ganzen sinnvolle Ergebnisse herauskommen sollen sehe ich nicht, warum man $LC_COLLATE so wählen sollte, dass nicht alphabetisch aufsteigend sortiert wird. Kennst du ein Gegenbeispiel?
Ob a A b B oder A B a b sortiert wird spielt in diesem Fall keine Rolle.

chrisbra
Beiträge: 122
Registriert: 19.10.2005 09:36:09
Wohnort: Sachsen-Anhalt
Kontaktdaten:

Re: kleine scripthilfe benötigt

Beitrag von chrisbra » 30.09.2009 13:38:32

chrisbra hat geschrieben:Äh ja, und das hilft dir genau wie, wenn vorher schon Globbing stattfindet?
Das ist natürlich erstmal Blödsinn, denn hinterher sortiert ls dann halt im Zweifel um.
hikaru hat geschrieben:Sofern man davon ausgeht, dass dabei im Großen und Ganzen sinnvolle Ergebnisse herauskommen sollen sehe ich nicht, warum man $LC_COLLATE so wählen sollte, dass nicht alphabetisch aufsteigend sortiert wird. Kennst du ein Gegenbeispiel?
Ob a A b B oder A B a b sortiert wird spielt in diesem Fall keine Rolle.
Nein. Man sollte halt nur im Hinterkopf behalten, dass es da Unterschiede geben kann.
Meine Whishlist
:wq!

Antworten