1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team-Mitglieder
    4. Trophäen
    5. Mitgliedersuche
  4. Tutorial Bereich
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Lexikon
  • Erweiterte Suche
  1. Informatik Forum
  2. Software und Anwendungen
  3. Betriebssysteme

an die bash gurus

    • Linux
  • Seppi
  • 3. September 2005 um 14:11
  • Unerledigt
  • Seppi
    11
    Seppi
    Mitglied
    Reaktionen
    1
    Punkte
    1.216
    Beiträge
    204
    • 3. September 2005 um 14:11
    • #1

    hallo an alle!

    Irgendwie bringe ich es nicht zusammen mit bash die filenamen in einem Verzeichnis aufzulisten ... kann mir jemand hier weiterhelfen?

    Was ich in diesem Testbeispiel machen möchte ist ein Verzeichnis als argument zu übergeben und dann die filenamen einzeln auszugeben. Die Filenamen werden dann später weiterprozessiert daher würde mir ls nicht viel bringen

    Code
    if cd "$1"; then
      for file in $1; do
    	if [ -f '$file' ]; then
    	  echo "file: " $file
    	fi
      done
    fi


  • Alex_K
    15
    Alex_K
    Mitglied
    Reaktionen
    10
    Punkte
    2.465
    Beiträge
    487
    • 3. September 2005 um 14:28
    • #2

    versuchs mal mit:

    Code
    if cd "$1"; then
      for file in `ls $1`; do
    	if [ -f '$file' ]; then
    	  echo "file: " $file
    	fi
      done
    fi

    Total world domination is proceeding as planned.

  • gelbasack
    25
    gelbasack
    Mitglied
    Reaktionen
    90
    Punkte
    6.525
    Beiträge
    1.241
    • 3. September 2005 um 15:05
    • #3

    Also bei mir funktioniert diese Lösung nicht...

    Code
    if cd "$1"; then
      for file in *; do
        if [ -f '$file' ]; then
          echo "file: " $file
        fi
      done
    fi


    Wenn man in das Verzeichnis wechselt (erste Zeile), braucht man das Verzeichnis nicht noch bei ls übergeben, da die Bash Wildcards ohnehin sofort erweitert, reicht ein simpes "*".
    So, ich hoffe, das stimmt, bei mir hat's funktioniert.

  • Seppi
    11
    Seppi
    Mitglied
    Reaktionen
    1
    Punkte
    1.216
    Beiträge
    204
    • 3. September 2005 um 17:12
    • #4

    bei gehts jetzt ... danke

    Ich hab aber das problem, dass die Rekursion nicht funktioniert:

    Code
    function collectDir() {
    		local file
    		local path
    
    
    		if cd "$1"; then
    				for file in `ls $1`; do
    					 if [ -f '$file' ]; then
    							 echo "copying " $1$file "to" $2
    							 cp $1/$file $2
    					    fi
    					 if [ -d '$file' ]; then
    							 echo "entering subdir" $1/$file		 
    							 collectDir $1/$file $2
    					    fi
    				done
    		fi
    
    
    }
    Alles anzeigen


  • colo
    7
    colo
    Mitglied
    Reaktionen
    2
    Punkte
    482
    Beiträge
    95
    • 4. September 2005 um 15:03
    • #5
    Code
    find $1 -type f -exec cp \{\} $2 \;


    ?
    Ist das schon alles, was du da (etwas umstaendlich ;)) formuliert hast?

    Haette auch den Vorteil, dass es dir das Script bei Whitespaces in Dateinamen nicht upfucked.

    Free Software. Free Society. Better Lives.

    Mein Blog - Thema Technik

  • Seppi
    11
    Seppi
    Mitglied
    Reaktionen
    1
    Punkte
    1.216
    Beiträge
    204
    • 4. September 2005 um 15:14
    • #6

    hmmm ... hmmmmmmmmmm ....

    ich geh weinen ... :winking_face:

    wieso ist mir das nicht eingefallen!!!!!!!!!!!!!!!! :mad:


  • Maximilian Rupp 27. Dezember 2024 um 12:09

    Hat das Thema aus dem Forum Betriebssysteme nach Betriebssysteme verschoben.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!

Benutzerkonto erstellen Anmelden

Benutzer online in diesem Thema

  • 1 Besucher

Rechtliches

Impressum

Datenschutzerklärung