Anzeige:
Ergebnis 1 bis 5 von 5

Thema: BASH: For-Schleife mit Leerzeichen in Variable

  1. #1
    giftnudel
    Gast

    BASH: For-Schleife mit Leerzeichen in Variable

    Hallo,

    ich versuche gerade auf meinem Server alle Dateien zu finden, die die UID 500 haben. Das habe ich noch hinbekommen . Nun sollte jede diese Datei dem user giftnudel gehören.

    Da ich keine Ahnung habe, schrieb ich ein skript à la:
    Code:
    for file in `find /daten -uid 500 -printf "\"%p\"\n"`; do chown giftnudel.users $file; done
    Blöd jetzt: Falls der Pfad ein Leerzeichen enthält (/daten/Dies\ ist\ kacke/) sagt mir das Skript:
    Code:
    chown: /daten/Dies nicht gefunden
    chown: ist nicht gefunden
    chown: kacke/ nicht gefunden
    Bei Verzeichnissen und Dateien ohne Leerzeichem funktioniert das Skript ohne Probleme, jemand ne Idee?

    Vielen Dank schon mal

    giftnudel

  2. #2
    Registrierter Benutzer
    Registriert seit
    26.12.1999
    Ort
    Stuttgart
    Beiträge
    259
    Hi,

    entweder Du nutzt die -exec Funktion von find:

    Code:
    find /daten -uid 500 -exec chown giftnudel.users {} \;
    oder Du setzt $IFS auf '\n' (Standard ist ein " \n\t"):

    Code:
    IFS="
    "
    
    for file in `find /daten -uid 500`; do 
      chown giftnudel.users $file; 
    done
    Gruß micha
    IRC: irc.euirc.net #tux

  3. #3
    giftnudel
    Gast
    Hallo,

    vielen Dank, die exec-Funktion habe ich trotz mehrmaligen lesens der Manpage nicht verstanden, jetzt wird es irgendwie klar

    $IFS ist auch ne klasse Idee, aber wer soll das wissen

    Nun habe ich 2 Möglichkeiten, nochmal danke

    giftnudel

  4. #4
    Registrierter Benutzer
    Registriert seit
    30.12.2001
    Beiträge
    444
    Auch wenn's mit exec eleganter geht hier noch 'mal zwei Hinweise:

    Code:
    for file in $(find /daten -uid 500 -printf "\"%p\"\n")
    do 
    chown giftnudel.users "$file"
    done
    Die Anfuehrungszeichen loesen dein Problem. Die Klammern verbessern die Uebersicht/Wartbarkeit

  5. #5
    Registrierter Benutzer Avatar von peschmae
    Registriert seit
    14.03.2002
    Ort
    Schweizland
    Beiträge
    4.549
    @micha: Danke vielmals.

    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)

Lesezeichen

Berechtigungen

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