find und sonderzeichen/leerzeichen

saiki

saiki

Bratwurstgriller
ich habe ein kleines script hier und habe ein paar probleme. find übergibt nicht den kompletten pfad und dateiname.

Code:
for i in "$(find . -iname "*.rar")"
do
   #unrar -y x "$i" /tmp
   unrar vl "$i"
   echo "$i" \n
done

wie bekomme ich nun find dazu, dass es mir die dateinamen mit dazugehörigen escapes übergibt?

danke!
 
Find uebergibt schon den korrekten Dateinamen, nur sieht die shell z.B. bei einem Namen mit Leerzeichen zwei Worte. Versuch es doch mal mit der -printf option von find, indem Du doppelte Anfuehrungszeichen um den Dateinamen setzt. Ob das bei den Sonderzeichen hilft, weiss ich nicht. Jedoch sollten sie verhindern, dass die shell den Namen bzw. die Zeichen darin interpretiert.
 
Oder man arbeitet mit

Code:
find ... | while read i; do
  unrar vl "$i"
  ...
done
 
Zuletzt bearbeitet:
xantis variante funktioniert wunderbar :) danke
 
find . -iname "*.rar" -exec unrar vl {} \;

grad ausm Kopf. Wenns nicht klappt, dann einfach in der Manpage von find nach exec suchen.
 
so ich grab das thema einfach nochmal aus... hab ein aehnliches problem nur dass ich die ausgabe von find nicht an 'unrar', sondern an 'cp' uebergeben will... das problem ist dass manche der gefundenen dateien whitespaces enthalten und diese somit dann von cp nicht erkannt werden...

bisher siehts so aus:

Code:
find . -type f | while read i; do cp $i /tmp/imgdump ; done


kann mir irgendwer weiterhelfen? :D

tHx


gReetZ
 
Hallo
Verwende einfach "$i" statt $i

Dann sollte das klappen.

Gruß Wolfgang
 
Hey funktioniert super!

Vielen Dank!


gReetZ
 

Ähnliche Themen

Verschlüsseltes Backup-Script mit rsync

Variable mit 'tr' ändern

HandbrakeCLI Shell Skript

html2text für ganzes Verzeichnis

SSD auf einen (geringfügig) kleineren USB-Stick wiederherstellen

Zurück
Oben