bash shell - Dateien nacheinander aufrufen

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Der Vorschlag hat drei Dinge, die zu beachten sind:

    1. Findest du so keine unsichtbaren Dateien (wobei ich bei MacOSx nicht sicher weiss, ob dort der .-Prefix existiert, oder etwas ganz anderes)
    2. Werden so auch Ordner mit einbezogen.
    3. Unterverzeichnisse werden nicht durchlaufen (daran habe ich erstmal nichts geändert)

    Quellcode

    1. #!/bin/bash
    2. for entry in `ls -a`; do
    3. if [[ -f $entry ]]; then
    4. echo "file"
    5. fi
    6. done


    Geändert habe ich, neben der Notation der For-Schleife, was keinen funktionalen Unterschied bedeutet, das -a in den `-Ticks, sowie die IF-Abfrage.

    Zur Erklärung:
    • ls -a zeigt den vollständigen Ordnerinhalt an
    • Was in `-Ticks steht, wird von der Bash so ausgeführt. Die Ausgabe kann dann verwertet werden.
    • Was in [-Klammern innerhalb einer IF-Abfrage steht sind Tests. Das ist eine Kurzschreibweise für den Aufruf des 'test'-Programms (in diesem Fall: if /usr/bin/test -f $entry )
    • -f $entry prüft dabei auf den Typ Datei. mehr findest du in der Manpage des 'test'-Programms (man test)
    • [align=left]Wenn statt einer [ zwei [[ stehen, hast du die Möglichkeit logische Operatoren wie z.B. && oder || zu benutzen (in diesem Fall nicht genutzt, sondern nur aus Gewohnheit verwendet[/align]
    Wenn die Shell unter MacOSx so arbeitet wie die Bash unter Linux wird das funktionieren.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von evilwm ()