Bash: Verzeichnisse mit Leerzeichen finden und ausgeben..

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
tanita
Beiträge: 78
Registriert: 14.08.2003 13:45:27
Wohnort: Muc
Kontaktdaten:

Bash: Verzeichnisse mit Leerzeichen finden und ausgeben..

Beitrag von tanita » 28.10.2006 21:52:14

Hallo,

ich möchte z.B. auf einer CD mir die Verzeichnisse ausgeben, diese durchlaufen, die Dateien konvertieren, die gleichen Verzeichnisnahmen auf Platte anlegen, darin die konvertierten Dateien wieder ablegen - uff. Der mittlere Teil (Dateien Konvertieren) klappt schon.

Jetzt hänge ich an den Leerzeichen in den Verzeichnisnamen und der Dateien. Wenn ich mir das so ausgeben lasse:

Code: Alles auswählen

for i in $(find . -type d); do echo $i; done
Wird jeder String einzeln ausgegeben, z.B. 'Frank Zappa - Sheik Yerbouti - LP 1979' so:

Code: Alles auswählen

./Frank
Zappa
-
Sheik
Yerbouti
-
LP
1979

Kann mir jemand einen Tipp geben, wie ich mit den Leerzeichen klarkomme?

Danke,
Gruß T.

Benutzeravatar
goeb
Beiträge: 348
Registriert: 26.08.2006 18:12:08
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von goeb » 28.10.2006 22:11:53

So sollte es gehen:

Code: Alles auswählen

find . -type d | while read i; do echo $i; done
MfG, goeb

Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Beitrag von Duff » 28.10.2006 22:16:50

Stimmt, so kann man es machen.

Und ich wollte es schon irgendwie mit der Option -regex bei find machen, was aber noch nicht so ganz funktionieren wollte.

Naja, hauptsache tanita hat nun eine Lösung.
Oh, yeah!

Benutzeravatar
goeb
Beiträge: 348
Registriert: 26.08.2006 18:12:08
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von goeb » 28.10.2006 23:01:56

Ja, warum einfach wenns auch kompliziert geht :wink:

Code: Alles auswählen

#!/bin/bash
OIFS=$IFS
IFS=`echo -en "\n"`
for i in $(find . -type d); do
        echo $i
done
IFS=$OIFS
MfG, goeb

Benutzeravatar
Joghurt
Beiträge: 5244
Registriert: 30.01.2003 15:27:31
Wohnort: Hamburg
Kontaktdaten:

Beitrag von Joghurt » 29.10.2006 00:40:34

goeb hat geschrieben:Ja, warum einfach wenns auch kompliziert geht :wink:

Code: Alles auswählen

IFS=`echo -en "\n"`
Ja, das ist wahrlich kompliziert. Es ginge auch ein

Code: Alles auswählen

IFS="
"

tanita
Beiträge: 78
Registriert: 14.08.2003 13:45:27
Wohnort: Muc
Kontaktdaten:

Beitrag von tanita » 29.10.2006 19:09:33

:lol: ich hab nochwas einfaches:

Code: Alles auswählen

find /cdrom/ -type d | xargs -0
jetz muss ich nur noch das '/cdrom/' mit sed oder irgendwas raus kriegen, dann passt's. Hab schon ewig nimmer gescriptet, echt krass, was man alles so vergisst.. :?

:hail: Danke euch!

Servus T.

edit: das macht aber doch nicht das in einer Schleife, so wie ich das will.. :roll: da ist goeb's Version schon geschickter..

Antworten