Dateien eines Ordners auslesen

Bash, Shell, PHP, Python, Perl, CGI
nixsmooth
Posts: 4
Joined: 2008-10-21 08:42

Dateien eines Ordners auslesen

Post by nixsmooth » 2008-10-21 17:58

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

nixsmooth
Posts: 4
Joined: 2008-10-21 08:42

Re: Dateien eines Ordners auslesen

Post by nixsmooth » 2008-10-21 18:09

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.

User avatar
daemotron
Administrator
Administrator
Posts: 2635
Joined: 2004-01-21 17:44

Re: Dateien eines Ordners auslesen

Post by daemotron » 2008-10-21 18:19

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.

User avatar
Joe User
Project Manager
Project Manager
Posts: 11138
Joined: 2003-02-27 01:00
Location: Hamburg

Re: Dateien eines Ordners auslesen

Post by Joe User » 2008-10-21 19:02

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
PayPal.Me/JoeUserFreeBSD Remote Installation
Wings for LifeWings for Life World Run

„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.

juergen
Posts: 133
Joined: 2004-03-30 14:44

Re: Dateien eines Ordners auslesen

Post by juergen » 2008-10-23 21:10

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