• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Dateien aus Verzeichnis anzeigen

Hallo Zusammen,
ich möchte gerne aus einem Verzeichniss nur den 1. Dateinamen auslesen und anschließend diesen Namen in einer Variablen speichern.

Pfad: /Faxdruck/faxe/

in dem Verzeichnis faxe sind z.B. folgende Dateien enthalten

fax1.tif
fax2.tif
fax3.tif
usw....

mein Problem ist mit "ls" wird mir der gesammte Inhalt des Verzeichnisses "faxe" angezeigt.
Wie kann ich es anstellen dass mir nur "fax1.tif" ausgegeben wird.

vielen Dank für eure Hilfe

PS: sorry wegen der dummen Frage , bin ein absoluter Linux neuling.
 
Hallo Hoschi,

nur die erste Datei müßtest Du eigentlich so bekommen:

Code:
ls -1 | head -n 1

Der Parameter "-1" (eins) für ls bewirkt, daß pro Zeile nur ein Dateiname ausgegeben wird. Mit "head -n 1" holst Du Dir von der Ausgabe des ls-Befehls dann nur die erste Zeile...
 
var=`ls ORDNER | sed -n -e '1p'`

Siehe
~> info bash -> Basics -> Expansions -> Command substitution
~> man sed
http://www.tty1.net/sed-tutorium/html/
 
naja, sed ist wohl etwas heftig ;) aber es könnte relevant werden, denn wie ist die 1. Datei zu erkennen? soll es die von ls als 1. gelesene Datei sein, oder ist das eine, die die Zahl 1 drin hat?...
 
danke für eure schnelle Hilfe,


@gameboy:
bei dem Befehl ls -l | head -n 1
bringt er mir folgende Ausgabe
"total 22804"
liegt wahrscheinlich daran dass in dem Verzeichnis an 1. und 2. Stelle folgendes steht
.
..
fax1234.tif
fax2345.tif usw

gebe ich nun an ls -l | head -n 3 >> var
bekomme ich folgende Einträge in der Variablen.

.
..
fax1234.tif

wie bekomme ich in der Variablen nur den Text fax1234.tif rein?

Gruss
hoschi1301
 
hoschi1301 schrieb:
bei dem Befehl ls -l | head -n 1
bringt er mir folgende Ausgabe
"total 22804"
liegt wahrscheinlich daran dass in dem Verzeichnis an 1. und 2. Stelle folgendes steht

Du sollst ja auch nicht "minus el" tippen sondern "minus eins" dann klappts auch mit dem nachbarn ;)

aber ob das Verfahren so sinnig ist, immer die 1. Datei zu nehmen... OK, ohne Infos über das Problem wird Dir da keiner weiterhelfen können
 
sinn des ganzen liegt darin:
das Skript soll mir zeitgesteuert jeden Abend um 19Uhr meine Faxe ausdrucken.
Es handelt sich um einen HylafaxServer unter Suse Linux 7.2.
Die Faxe werden über einen Großen Drucker von Minolta ausgedruckt.
Nur kann ich leider nicht mehr als 1000Faxe auf einmal drucken.
Da bricht die Linuxmaschine den Ripvorgang ab.
wieso bricht er ab?

gesendet werden die Faxe mit dem Befehl:

fax2ps -a *.tif | psnup -s 0.90 -1 | lpr -Pprinter

psnup wird verwendet damit beim Ausdruck der Faxe die Kopfzeile des Absenders mit angedruckt wird.

das Skript soll nun die Faxe aus dem Ordner Faxeingang kopieren und in Dateien mit je 1000Faxen speichern.

gibt es vielleicht noch ne andere Möglichkeit um das Problem anzugehen.

gruss
 
Siehst Du sag worum es geht :) und Dir wird geholfen.

Das Problem ist die *.tif Expansion, die Bash macht das und da kommst Du an den Rand der Möglichkeiten, hier sind nur begrenzte Zeichen möglich, d.h. ich würde das spontan so lösen:

Code:
find /derPfad/zu/den/faxen -exec fax2ps -a {} \; | psnup -s 0.90 -1 | lpr -Pprinter

(evtl. passt das noch nicht so ganz aber im Prinzip...)

alternativ

Code:
#!/bin/bash

for file in $(ls -1 /derPfad/zu/den/faxen/ )
do
  fax2ps -a "$file" | psnup -s 0.90 -1 | lpr -Pprinter 
done
 
Oben