Anzeige:
Ergebnis 1 bis 7 von 7

Thema: shell script dateien suchen und bearbeiten

  1. #1
    Registrierter Benutzer
    Registriert seit
    05.06.2005
    Beiträge
    5

    Question shell script dateien suchen und bearbeiten

    hallo,

    ich versuche mit einem shell script bestimmte dateien zu suchen und auf treffer mehrere kommandos abzusetzen.

    hier mein verwendetes script:

    Code:
    for FILE in `find . -type f \( -name "*.cpp" -o -name "*.h" \)`
    do
                    cp "$FILE" "$FILE.temp"
                    tr -s "\r" < "$FILE.temp" > "$FILE"
                    rm "$FILE.temp"
    done
    das script funktioniert gut... solange im gefundenen pfad bzw. dateinamen keine "leerzeichen" enthalten sind !!!

    denn hier splitted das "for" kommando jedes leerzeichen auf, so wird z.b. aus

    ./neuer ordner/test.cpp

    ./neuer
    ordner/test.cpp

    und der cp, tr, rm findet natürlich diese dateinamen nicht hat jemand eine idee wie man das lösen kann ???

    vielen dank im voraus


    ciao dirk

  2. #2
    Registrierter Benutzer
    Registriert seit
    08.07.2002
    Beiträge
    377
    Willst du nur dateien bearbeiten, dann kontrollier doch das mit -f glaubh ich geht das.
    Amilo D - 2,8 Ghz - ATI Radeon 9000
    Debian GNU/Linux 3.1 (Sarge)

  3. #3
    Registrierter Benutzer Avatar von peschmae
    Registriert seit
    14.03.2002
    Ort
    Schweizland
    Beiträge
    4.549
    Mit

    IFS="
    "

    vor der Schleife ist die Sache normalerweise gegessen. Das zwischen dem " und dem " ist übrigens ein Enter und nix mehr/weniger.

    MfG Peschmä
    The greatest trick the Devil ever pulled was convincing the world he didn't exist. -- The Usual Suspects (1995)
    Hey, I feel their pain. It's irritating as hell when people act like they have rights. The great old one (2006)

  4. #4
    Registrierter Benutzer Avatar von Hans-Georg Normann
    Registriert seit
    04.03.2000
    Ort
    Uetersen
    Beiträge
    571
    Warum noch die FOR Schleife?
    Code:
    find . -type f \( -name "*.cpp" -o -name "*.h" \) -exec \
      tr -s "\r" < {} > {}.temp; \
      cp {}.temp {}; \
      rm {}.temp \;
    Ich habe es so nicht geprüft, denke aber das es richtig ist. Auf jeden Fall muss die -exec sequenz mit \; abgeschlossen werden.

    /*EDIT
    Post # 555, darauf sollte man sich mal einen Gammeldansk genehmigen! Prost!
    */

    Hans
    333 Mhz, 466 MHz, neee, ich hab was neues zuhause.....

  5. #5
    Registrierter Benutzer Avatar von peschmae
    Registriert seit
    14.03.2002
    Ort
    Schweizland
    Beiträge
    4.549
    Zitat Zitat von Hans-Georg Normann
    Warum noch die FOR Schleife?
    Stimmt. Irgendwie hatte ich da das Gehirn abgeschaltet

    /*EDIT
    Post # 555, darauf sollte man sich mal einen Gammeldansk genehmigen! Prost!
    */
    Gratuliere! Aber was ist ein Gammeldansk?

    MfG Peschmä
    The greatest trick the Devil ever pulled was convincing the world he didn't exist. -- The Usual Suspects (1995)
    Hey, I feel their pain. It's irritating as hell when people act like they have rights. The great old one (2006)

  6. #6
    Registrierter Benutzer Avatar von Hans-Georg Normann
    Registriert seit
    04.03.2000
    Ort
    Uetersen
    Beiträge
    571
    Zitat Zitat von peschmae
    ....Aber was ist ein Gammeldansk?
    Das ist so ziemlich das einzigst hochprozentige Gebräu, was geniessbar ist. Da ich in einem dänischen Konzern arbeite, gehört dieser Kräuterbitter zum Inventar. Ab einem gewissen Pegel fällt das Shellscripten dann leicher (oder man spürt den Schmerz nicht mehr)

    Hans
    333 Mhz, 466 MHz, neee, ich hab was neues zuhause.....

  7. #7
    Registrierter Benutzer
    Registriert seit
    05.06.2005
    Beiträge
    5
    Zitat Zitat von peschmae
    Gratuliere! Aber was ist ein Gammeldansk?
    schaust du hier: http://www.gammeldansk.dk/composite-58.htm

    also erstmal vielen dank für eure antworten

    funktioniert mit dem IFS ( kannte ich noch gar nicht... ist aber toll !!! )

    auch die Lösung von "HGN" gefällt mir gut... ich hatte es jetzt noch so hinbekomen:
    Code:
    find . -type f \( -name "*.cpp" -o -name "*.h" \) | while read FILE
    do
            cp "$FILE" "$FILE.dirk"
            tr -s "\r" < "$FILE.dirk" > "$FILE"
            rm "$FILE.dirk"
    done
    dem "while read" sind anders als dem "for" leerzeichen egal


    ciao dirk

Lesezeichen

Berechtigungen

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