Datei- und Verz.- Name mit Leerzeichen

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von flugopa, 15.08.2008.

  1. #1 flugopa, 15.08.2008
    flugopa

    flugopa Der lernwillige

    Dabei seit:
    27.05.2006
    Beiträge:
    739
    Zustimmungen:
    0
    Ort:
    München
    Würde gern ein Verz. und deren Inhalt auf Änderungen überprüfen.
    Leider haben die Dateien und auch die Verzeichnisname immer mal wieder Leerzeichen, die der nachfolgende Code nicht richtig bearbeiten kann.

    Code:
    #!/bin/sh
    for i in `find /home/user1/ -type f`; do
            md5sum $i >>user1.md5
    done
    
    Wer hat eine Idee?
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. kworx

    kworx Jungspund

    Dabei seit:
    05.08.2008
    Beiträge:
    15
    Zustimmungen:
    0
    Probiers mal so.
    Code:
    find /home/user1/ -type f -exec md5sum {} \; >>user1.md5
    
     
  4. #3 Wolfgang, 16.08.2008
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Du solltest dir angewöhnen im Zweifelsfall immer Quoting zu nutzen:
    In deinem Fall:
    Code:
    #!/bin/sh
    for i in `find /home/user1/ -type f`; do
            md5sum [B][COLOR="Red"]"[/COLOR]$i[COLOR="Red"]"[/COLOR][/B] >>user1.md5
    done
     
  5. #4 bytepool, 16.08.2008
    Zuletzt bearbeitet: 16.08.2008
    bytepool

    bytepool Code Monkey

    Dabei seit:
    12.07.2003
    Beiträge:
    791
    Zustimmungen:
    0
    Ort:
    /home/sweden/göteborg
    Hi,

    also so ungern ich dir auch widerspreche Wolfgang, aber ich fuerchte in diesem Fall irrst du dich. Fuer
    Code:
    `find /dir/ -type f` 
    wird die Ausgabe des Befehls eingesetzt. Sollte "/dir/" also nur eine Datei mit dem Namen "Hello World.txt" enthalten, wuerde die komplette erste Zeile lauten:
    Code:
     for i in Hello World.txt; do
    D.h. i wuerde die Werte "Hello" und "World.txt" annehmen. Das aendert sich auch nicht, wenn das $i im body der for Schleife "gequotet" wird. Ich denke auch, dass -exec in diesem Fall die Variante des geringsten Widerstandes ist...
    Aber wenn ich mich nicht irre (was jederzeit moeglich ist), hatte Wolfgang zu der Thematik irgendwann auch mal eine sehr elegante Loesung mit read und while praesentiert, so dass ich mal vermute, dass das ein Ausrutscher zu spaeter Stunde war. ;)
    Ich sollte mich auch mal langsam ins Bett verkriechen, muss morgen wieder frueh raus...

    <edit>
    Ok, ich glaube ich bezog mich weiter oben auf das schoene Muster
    Code:
    ls > ls.txt; while read i; do echo $i; done < ls.txt
    
    zum zeilenweisen auslesen von Dateien.Mit ein bisschen Phantasie laesst sich auch damit eine Loesung basteln.
    </edit>

    mfg,
    bytepool
     
  6. #5 Wolfgang, 16.08.2008
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Stimmt, du hast Recht.
    Ich habe nicht richtig hingesehen, sollte nicht antworten, wenn ich andere Dinge nebenbei zu so später Stunde mache.
    Das geht mit einer Pipe und/oder while read, oder IFS auf Newline setzen oder mit xargs und find print0 oder ...
    exec aber auch nur, wenn das Programm nur ein Argument erwartet, sonst muss {} gequotet werden.
    N8
    Wolfgang
     
  7. #6 flugopa, 16.08.2008
    flugopa

    flugopa Der lernwillige

    Dabei seit:
    27.05.2006
    Beiträge:
    739
    Zustimmungen:
    0
    Ort:
    München
    Ok, es wird etwas mehr Hintergrund gewünscht:

    Nehmen wir an das man eine Musiksammlung (nicht nur mp3) "gecheckt" werden sollte. Nun kann man sich denken, daß Sonderzeichen wie & oder () im Titel enthalten sein können.
    Wie man dazu kommt?
    Code:
    http://www.shoutcast.com
    
    Was ich gerade höre?
    Code:
    MPlayer dev-SVN-r27432-4.1.2 (C) 2000-2008 MPlayer Team
    CPU: Genuine Intel(R) CPU            2140  @ 1.60GHz (Family: 6, Model: 15, Stepping: 2)
    CPUflags:  MMX: 1 MMX2: 1 3DNow: 0 3DNow2: 0 SSE: 1 SSE2: 1
    Compiled for x86 CPU with extensions: MMX MMX2 SSE SSE2
    Unknown entry type Version=2
    
    Playing http://212.62.227.4:2020.
    Resolving 212.62.227.4 for AF_INET6...
    Couldn't resolve name for AF_INET6: 212.62.227.4
    Connecting to server 212.62.227.4[212.62.227.4]: 2020...
    Name   : RadioMix  Vi spiller den musikken vi vil spille
    Genre  : Pop Rock Country
    Website: http://www.radiomix.no
    Public : yes
    Bitrate: 192kbit/s
    Cache size set to 320 KBytes
    Cache fill:  5.00% (16384 bytes)   
    ICY Info: StreamTitle='ELO  -  Roll Over Beethoven';StreamUrl='';
    Cache fill: 15.00% (49152 bytes)   
    Audio only file format detected.
    ==========================================================================
    Opening audio decoder: [mp3lib] MPEG layer-2, layer-3
    AUDIO: 44100 Hz, 2 ch, s16le, 192.0 kbit/13.61% (ratio: 24000->176400)
    Selected audio codec: [mp3] afm: mp3lib (mp3lib MPEG layer-2, layer-3)
    
    Und nun komme wir auf das Eingangsthema zurück:
    Überprüfung der Files auf die Checksumme.
    Wie könnte die Lösung unter Bash aussehen, oder ist die Bash hier am Ende?

    Vor sehr sehr langer langer Zeit (mein Gott wie die Zeit vergeht) hatte ich mal unter Borland C programmiert.
    Ist Phyton ein guter Wiedereinstieg?
     
  8. #7 bytepool, 16.08.2008
    Zuletzt bearbeitet: 16.08.2008
    bytepool

    bytepool Code Monkey

    Dabei seit:
    12.07.2003
    Beiträge:
    791
    Zustimmungen:
    0
    Ort:
    /home/sweden/göteborg
    Hi,

    ich verstehe dein Problem gerade nicht, fuer deine urspruengliche Frage wurde eine Loesung gepostet, was funktioniert denn daran noch nicht?

    Das haengt natuerlich davon ab was deine Zielsetzung ist, und was du schreiben willst. Prinzipiell sind Skriptsprachen erstmal recht leicht zu lernen, und garantiert leichter als C. Wenn es um Automatisierung von Administrationsaufgaben unter *nix geht, wuerde ich eher Perl empfehlen, fuer etwas groessere Programme wuerde ich eher Python (oder direkt Java) nehmen. Und bash scripting ist auf Unix Systemen auch immer eine nuetzliche und lustige Sache.

    mfg,
    bytepool
     
  9. kworx

    kworx Jungspund

    Dabei seit:
    05.08.2008
    Beiträge:
    15
    Zustimmungen:
    0
    ?( Geht mir auch so. Ich kann hier kein Problem feststellen.

    Code:
    $ for i in \& \; \( \); do touch $i; done
    $ find -type f -exec md5sum {} \;
    d41d8cd98f00b204e9800998ecf8427e  ./(
    d41d8cd98f00b204e9800998ecf8427e  ./;
    d41d8cd98f00b204e9800998ecf8427e  ./)
    d41d8cd98f00b204e9800998ecf8427e  ./&
    
     
  10. #9 flugopa, 17.08.2008
    flugopa

    flugopa Der lernwillige

    Dabei seit:
    27.05.2006
    Beiträge:
    739
    Zustimmungen:
    0
    Ort:
    München
    Leider besitze ich die Fähigkeit mich unverständlich zu artikulieren.

    Worum geht es?

    Alle Audiodateien auf md5sum zu "checken".
    Hinweis: Die Dateien liegen nicht alle in ein Verzeichnis!

    Wie sollte der Code lauten, wenn man die nachfolgenden Zeilen betrachtet?
    :oldman

    Snip...
    Code:
    ./256/Exodus Webradio-((Blazing Reggae))))/Cold Hearted Fool,Richie Spice.mp3
    ./256/Exodus Webradio-((Blazing Reggae))))/Woman I Love,Anthony Cruz.mp3
    ./256/Exodus Webradio-((Blazing Reggae))))/whats going home,i octane.mp3
    ./256/Exodus Webradio-((Blazing Reggae))))/Dem Cant Stop The Time,Fanton Mojah.mp3
    ./256/Exodus Webradio-((Blazing Reggae))))/Still The Same,Morgan Heritage.mp3
    ./256/Exodus Webradio-((Blazing Reggae))))/never gonna be the same,sean paul.mp3
    ./256/Exodus Webradio-((Blazing Reggae))))/Jah mek me stronger,Fantan Mojah.mp3
    ./256/Exodus Webradio-((Blazing Reggae))))/Shabba Ranks-Burn Up (Feat Fatta & Los),VA.mp3
    ./256/Exodus Webradio-((Blazing Reggae))))/Open Da Door,Richie Spice.mp3
    ./256/Exodus Webradio-((Blazing Reggae))))/Tell Me the Reason Why,Ras Shiloh.mp3
    ./256/Exodus Webradio-((Blazing Reggae))))/Momma Warning,Ras Shiloh.mp3
    ./256/Exodus Webradio-((Blazing Reggae))))/Royal Philharmonic Orchestra - Hooked On Classics.mp3
    ./256/Exodus Webradio-((Blazing Reggae))))/Sleep Last Night (give some more riddim),Junior Kelly.mp3
    ./256/Exodus Webradio-((Blazing Reggae))))/kings of kings,jah mason.mp3
    ./256/Exodus Webradio-((Blazing Reggae))))/reasons,stevie face.mp3
    ./256/Exodus Webradio-((Blazing Reggae))))/Baby You Know,Buju Banton.mp3
    ./256/Exodus Webradio-((Blazing Reggae))))/Wings Of Love,Bushman.mp3
    ./256/Exodus Webradio-((Blazing Reggae))))/can't take rhe pain no more,luciano.mp3
    ./256/Exodus Webradio-((Blazing Reggae))))/never lose the faith,jah mason.mp3
    ./256/Exodus Webradio-((Blazing Reggae))))/jah cure ft fantan mojah - nuh build great man(sweet sop riddim),Jah Cure.mp3
    ./256/Exodus Webradio-((Blazing Reggae))))/stop all the violence,sizzla.mp3
    ./256/Exodus Webradio-((Blazing Reggae))))/give thanks,mikey spice.mp3
    ./256/Exodus Webradio-((Blazing Reggae))))/life be the same way,natural black.mp3
    ./256/Exodus Webradio-((Blazing Reggae))))/what will it take,jah cure.mp3
    ./256/Exodus Webradio-((Blazing Reggae))))/Let me know,Gyptain.mp3
    ./256/Exodus Webradio-((Blazing Reggae))))/Blaze Dem Out,Capleton.mp3
    ./256/Exodus Webradio-((Blazing Reggae))))/U Never Know,Gyptian.mp3
    ./256/Exodus Webradio-((Blazing Reggae))))/In Da Ghetto,Burro Banton.mp3
    ./256/Exodus Webradio-((Blazing Reggae))))/Underground,Anthony B.mp3
    ./256/Exodus Webradio-((Blazing Reggae))))/Things And Times,Natural Black.mp3
    ./256/Exodus Webradio-((Blazing Reggae))))/Sweet Sop,Jah Mason.mp3
    ./256/Exodus Webradio-((Blazing Reggae))))/tell me,morgan heritage.mp3
    ./256/Exodus Webradio-((Blazing Reggae))))/Never let dem,Capleton.mp3
    ./256/Exodus Webradio-((Blazing Reggae))))/thanks and praise,fantan mojah.mp3
    ./256/Exodus Webradio-((Blazing Reggae))))/Open Your Eyes,Capleton.mp3
    ./256/Exodus Webradio-((Blazing Reggae))))/Back To Basics,Richie Stephens.mp3
    ./256/Exodus Webradio-((Blazing Reggae))))/New Day,Jah Bami.mp3
    ./256/Exodus Webradio-((Blazing Reggae))))/Living With Out You,Morgan Heritage.mp3
    ./256/Exodus Webradio-((Blazing Reggae))))/Food of Salvation,Bushman.mp3
    ./256/Exodus Webradio-((Blazing Reggae))))/Every Man Fi Have Wife,Beenie Man And U-Roy.mp3
    ./256/Exodus Webradio-((Blazing Reggae))))/Fancy Face,Tony Curtis.mp3
    ./256/Exodus Webradio-((Blazing Reggae))))/gangster love,bounty killer.mp3
    ./256/Exodus Webradio-((Blazing Reggae))))/Lucky You,Nanko.mp3
    ./256/Exodus Webradio-((Blazing Reggae))))/Holla,Maxi Priest.mp3
    ./256/Exodus Webradio-((Blazing Reggae))))/Someone Loves You,Sizzla.mp3
    ./256/Exodus Webradio-((Blazing Reggae))))/Border Line,Luciano.mp3
    ./256/Klassik/1.mp3
    ./256/HitStreamFM Test Edition MP3/Christina Aguilera - Candyman.mp3
    ./256/AVRO Light Classical TEST stream/Romance (The Gadfly) - Shostakovich -.mp3
    ./256/AVRO Light Classical TEST stream/Meditation (Thais) - Massenet -.mp3
    ./256/AVRO Light Classical TEST stream/Violine Konzert 1 Allegro maestoso - (Violinkonzerte nr 1 & 2 La Campanella  Deutsch Grammophon) - Wiener Symphoniker - Nicolo Paganini.mp3
    ./256/AVRO Light Classical TEST stream/Canon in D - Pachelbel -.mp3
    ./224/20.05.2007-Funk.mp3
    ./320/Radio Triton/Shania Twain - I'm Gonna Getcha Good!.mp3
    ./320/Radio Triton/Lynn Anderson - Rose Garden.mp3
    ./320/Radio Triton/Scorpions - Still Loving You.mp3
    ./320/Radio Triton/Afrika Bambatta And Ub40 - Reckless.mp3
    ./320/Radio Triton/Roy Orbison - Claudette.mp3
    ./320/Radio Triton/Cliff Richards - Lucky Lips.mp3
    ./320/Mark Knopfler/Local Hero (Studio) .mp3
    
    
    Snap...
     
  11. #10 Wolfgang, 17.08.2008
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Also dann würd ich dir ganz spontan find sein Feature mit print0 und xargs empfehlen:
    Schnellschuß ungetestet:
    Code:
    find /path/to/files -type f -iname "*mp3" -print0|xargs -0 -n1 md5sum >>/path/mymd5sumfile.txt
    Wobei du den Pfad und die Dateinamen anpassen musst.

    Gruß wolle
     
  12. #11 flugopa, 17.08.2008
    flugopa

    flugopa Der lernwillige

    Dabei seit:
    27.05.2006
    Beiträge:
    739
    Zustimmungen:
    0
    Ort:
    München
    Hallo Wolle,

    ich bin beeindruckt!
    Es funktioniert!

    Code:
    find /path/to/files -type f -iname "*mp3" -print0|xargs -0 -n1 md5sum >>/path/mymd5sumfile.txt
    Danke
     
  13. #12 bytepool, 17.08.2008
    bytepool

    bytepool Code Monkey

    Dabei seit:
    12.07.2003
    Beiträge:
    791
    Zustimmungen:
    0
    Ort:
    /home/sweden/göteborg
    Hi,

    also nennt mich Begriffsstutzig, aber ich verstehe immer noch nicht wieso dieser Umweg ueber xargs notwendig sein soll, wenn doch -exec von find genau das selbe macht? IMHO funktioniert die Loesung von kworx ebenso gut.

    mfg,
    bytepool
     
  14. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  15. #13 Gott_in_schwarz, 17.08.2008
    Gott_in_schwarz

    Gott_in_schwarz ar0

    Dabei seit:
    22.04.2007
    Beiträge:
    546
    Zustimmungen:
    0
    Ort:
    Niedersachsen
    Wenn wir den Thread schon künstlich am Leben erhalten, eine Anmerkung am Rande: Man kann auch backticks in doublequotes setzen....
    Code:
    for i in "`echo -e 'foo bar\na b c\nbaz'`"; do echo "$i"; done
     
  16. #14 Wolfgang, 17.08.2008
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Es hat (zumindest ich nicht) keiner behauptet, dass xargs die einzige Methode ist.

    Ich habe lediglich einen - meinen - Lösungsansatz geschrieben.
    Aus konservativen Gründen (z.B. Ressourcenschonend u. Vermeidung des Problems "Argument list too long"), verwende ich -exec sehr selten.
    Ein Umweg ist xargs nicht.

    Ja ich weiß, dass einige find -exec {} + können, was aber allemal sehr viele Instanzen des Befehls startet.

    Der Sinn von xargs ist u.A. nur so viele Argumente zu verwenden, wie zulässig sind. Siehe auch ulimit.

    Die Option -0 in Verbindung von -print0 wiederum wird verwendet, um alle Sonderzeichen (auch newline) in Dateinamen zu schützen.
    -n1 ist hier eigentlich nicht nötig, war mehr eingefügt um das Augenmerk darauf zu richten. ;)

    Gruß Wolfgang
     
Thema:

Datei- und Verz.- Name mit Leerzeichen

Die Seite wird geladen...

Datei- und Verz.- Name mit Leerzeichen - Ähnliche Themen

  1. Datei-System TraceFS für Kernel 4.1 eingereicht

    Datei-System TraceFS für Kernel 4.1 eingereicht: TraceFS hat die Aufnahme in Linux 4.0 knapp verpasst und hat nun für Kernel 4.1 erneut einen Versuch gestartet. Bei TraceFS handelt es sich um...
  2. Datei-System TraceFS für Kernel 4.1 vorgeschlagen.

    Datei-System TraceFS für Kernel 4.1 vorgeschlagen.: TraceFS hat die Aufnahme in Linux 4.0 knapp verpasst und hat nun für Kernel 4.1 erneut einen Versuch gestartet. Bei TraceFS handelt es sich um...
  3. Vault: Linux Foundation organisiert Konferenz über Datei- und Speichersysteme

    Vault: Linux Foundation organisiert Konferenz über Datei- und Speichersysteme: Die Linux Foundation hat die neue Konferenz »Vault« angekündigt, um auf den steigenden Bedarf bei linuxbasierten Speicher- und Dateisystemen zu...
  4. Typo3 CMS 6.2 mit Datei-Abstraktionsebene und neuem Install-Werkzeug

    Typo3 CMS 6.2 mit Datei-Abstraktionsebene und neuem Install-Werkzeug: Das freie Contentmanagementsystem (CMS) Typo3 CMS ist in der Version 6.2 veröffentlicht worden. Typo3 6.2 ist eine LTS-Version, für die die...
  5. Samba killt Server bei Datei-Upload, wie tracen?

    Samba killt Server bei Datei-Upload, wie tracen?: Hallo, ich habe hier ein gemoddetes NAS mit selbst gepatchtem 3.8er Kernel, der eigentlich sehr stabil läuft. Nur Samba stürzt reproduzierbar...