Page 1 of 1

Dateien eines Ordners auslesen

Posted: 2008-10-21 17:58
by nixsmooth
Hallo zusammen.

Ich bei einem Ordner schauen ob *.txt Dateien drin sind (wie find /pfad -name "*.txt”)
Sind keine drin soll nichts passieren.

Ist eine oder mehrere drin, soll er EINE nehmen (egal welche), den Dateinamen vor .txt in eine Variable speichern und die eigentliche Datei umbennen nach .fertig. Mit allen anderen soll er nichts machen, erst bei einem weiteren Durchlauf wieder eine nehmen.

Dann soll er ein Programm mit dem Parameter des Dateinamen (ohne Endung) aufrufen also ./programm -param=$DATEINAME, das weis sich aber wie, das ist nicht das Problem.

Kann mir da jemand helfen, wie ich diesen Dateiname auslese?

Viele Grüsse,
Erich

Re: Dateien eines Ordners auslesen

Posted: 2008-10-21 18:09
by nixsmooth
matzewe01 wrote:man find

Code: Select all

find - name type f -name *.txt -exec /tuwas.sh {} ;
Nein, dies funktioniert nicht so.
Find ist nicht das Problem, ich will den DATEINAMEN der (einer, wenn mehrere) Datei auslesen, den schlussendlich ohne Endung in einer Variable haben. Ebenfalls soll das in einem Script laufen, ich will nicht von einem kleinen Script ein weiteres Mikroscript aufrufen.
In dem Fall oben gibt find alle Dateien an und extrahiert den selben auch nicht von seiner Endung.

Re: Dateien eines Ordners auslesen

Posted: 2008-10-21 18:19
by daemotron

Code: Select all

find /pfad -type f -name '*.txt' -exec basename {} ; | sed 's/.[a-zA-Z0-9]+$//' | head -1
Damit hast Du den Dateinamen der ersten txt-Datei in /pfad ohne Dateiendung und ohne vorangestellte Pfadangabe.

Re: Dateien eines Ordners auslesen

Posted: 2008-10-21 19:02
by Joe User
Quick & Dirty & Untested:

Code: Select all

#!/bin/bash

for file in `find . -type f -name *.txt -print0 | xargs -0 ls`
do
  i=$(basename ${file} .txt)
  mv ${i} ${i}.fertig
  /path/to/program -param=${i}
done

Re: Dateien eines Ordners auslesen

Posted: 2008-10-23 21:10
by juergen

Code: Select all

for file in *.txt; do
    if [[ -f ${file} ]]; then 
       mv ${file} ${file}.fertig
       orig=${file%.txt}
       echo damit etwas machen $orig
       break
    fi
done