Anzeige:
Ergebnis 1 bis 4 von 4

Thema: Bash - Prüfen ob Dateien vorhanden sind

  1. #1
    Registrierter Benutzer
    Registriert seit
    01.11.2010
    Beiträge
    25

    Bash - Prüfen ob Dateien vorhanden sind

    Hallo zusammen

    Ich möchte in einem Shell-Script prüfen ob in einem Verzeichnis eine (oder mehrere) Datei vorhanden ist, deren Dateiname mit "test" beginnt. Ich habe versucht das ganze wie folgt zu lösen.

    Code:
    if [ -f /opt/data/test.* ] ; then
    	echo 'blabla'
    fi
    Solange nur eine Datei in dem Verzeichnis liegt, welche mit "test" beginnt, funktioniert das problemlos. Befinden sich jedoch mehrere solcher Dateien im Verzeichnis, erscheint eine "too many arguments"-Fehlermeldung.

    Wie kann ich das denn lösen?

    Vielen Dank.

  2. #2
    Registrierter Benutzer Avatar von jeebee
    Registriert seit
    01.01.2005
    Ort
    Bern || Zürich
    Beiträge
    540
    zb mit
    Code:
    for file in /opt/data/test.*; do
        if [ -f $file ]; then
            echo 'blabla'
        fi
    done
    das problem ist, dass test (und [) -f nur einen file name als argument nimmt (siehe auch man 1 test).
    my very own 128 bit integer
    C4 D3 B8 A8 9E A0 C6 EC 7D EC A8 15 28 D1 92 58
    more information

  3. #3
    Registrierter Benutzer
    Registriert seit
    01.11.2010
    Beiträge
    25
    Schade, hatte eigentlich gehofft, dass es dafür noch eine einfachere Möglichkeit gibt. Naja, so funktionierts wenigstens, danke für den Tipp. Hier noch mein Code, falls es jemanden interessiert. Ich frage damit beim Benutzer nach, ob die bestehenden Dateien gelöscht werden sollen.

    Code:
    for tfile in /opt/data/$name.* ] ; do
    	if [ -f $tfile ] ; then
    		echo 'Bestehende Dateien überschreiben?'
    		read answer
    		if [ "$answer" = y -o "$answer" = Y ] ; then
    			rm /opt/data/$name.*
    			echo 'Dateien wurden gelöscht!'
    			break
    		else
    			echo 'Bestehende Dateien werden verwendet!'
    			break		
    		fi			
    	fi
    done

  4. #4
    Registrierter Benutzer
    Registriert seit
    20.09.2005
    Beiträge
    61
    Wenn Du ohnehin ALLE Dateien nach Rückfrage löschen möchtest, egal wie viele da sind, dann könntest Du auf die for-Schleife verzichten und die Entscheidung anhand der ANZAHL der Dateien festlegen.

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •