Datei- und Verz.- Name mit Leerzeichen

F

flugopa

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?
 
Probiers mal so.
Code:
find /home/user1/ -type f -exec md5sum {} \; >>user1.md5
 
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
 
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
 
Zuletzt bearbeitet:
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
 
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?
 
Hi,

Wie könnte die Lösung unter Bash aussehen, oder ist die Bash hier am Ende?

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

Vor sehr sehr langer langer Zeit (mein Gott wie die Zeit vergeht) hatte ich mal unter Borland C programmiert.
Ist Phyton ein guter Wiedereinstieg?
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
 
Zuletzt bearbeitet:
?( 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  ./&
 
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...
 
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
 
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
 
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
 
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
 
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

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
 

Ähnliche Themen

Dateiinhalt mit Tabs wie Original an andere Datei anhängen

Skript bei Lubuntu nach jedem Start ausführen

Wie finde ich Leerzeichen im dateinamen

Problem mit Leerzeichen im Namen

Prblem mit zeilenweises auslesen von Datei und schreiben nach mysql

Zurück
Oben