[FRAGE] Dateinamen normalisieren während sie in einer "for" Schleife sind

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von Hobbystern, 25.04.2014.

  1. #1 Hobbystern, 25.04.2014
    Hobbystern

    Hobbystern Wahl-Debianer

    Dabei seit:
    02.02.2007
    Beiträge:
    186
    Zustimmungen:
    0
    Ort:
    westl. Ruhrgebiet
    Moin Gemeinde,

    ich habe ein Skript welches Emails abholt und weiterverarbeitet, manche müssen ausgedruckt werden.

    Nun hat sich herausgestellt das mein Kommando "lpr" nur normalisierte Dateien verarbeiten kann, ein Dateiname :

    23.01.2014.Druckdatei.so.benennt.man-ja-auch-keine-dateien.pdf

    wird schlichtweg asl "Datei nicht gefunden" ignoriert.

    Ich habe den Weg gewählt solche Dateinamen (welche ja aus der Email entpackt werden) innerhalb der for-Schleife zu "renamen" - aber da gibt es das gleiche Problem, rename findet solche seltsamen Dateinamen dann manchmal auch einfach nicht.

    Gibt es eine gute Lösung wie sowas ablaufen kann?

    Liebe Grüße,

    Stefan
     
  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. #2 bitmuncher, 25.04.2014
    bitmuncher

    bitmuncher Der Stillgelegte

    Dabei seit:
    08.05.2007
    Beiträge:
    3.171
    Zustimmungen:
    0
    Setze vor Leerzeichen und Sonderzeichen ein Backslash (\) oder packe den Dateinamen in einfache Anführungszeichen (').
     
  4. #3 Hobbystern, 25.04.2014
    Hobbystern

    Hobbystern Wahl-Debianer

    Dabei seit:
    02.02.2007
    Beiträge:
    186
    Zustimmungen:
    0
    Ort:
    westl. Ruhrgebiet
    Wir der Effekt auch in einer "for" Schleife wirken?
     
  5. #4 bitmuncher, 25.04.2014
    bitmuncher

    bitmuncher Der Stillgelegte

    Dabei seit:
    08.05.2007
    Beiträge:
    3.171
    Zustimmungen:
    0
    Eine for-Schleife macht nichts anderes als die Befehle in der Schleife mehrfach aufzurufen, eben für jeden Durchlauf ein Mal. Insofern sollte das natürlich auch in einer Schleife funktionieren. Da du aber ja vermutlich Variablen als Dateinamen verwendest, musst du dafür sorgen, dass die einfachen Anführungszeichen nicht die Auswertung der Variablen verhindern. Es kann also sein, dass du \' verwenden musst anstelle eines einfachen '. Da ich selten Bash und zumeist eher Perl verwende, müsste ich das allerdings auch erst testen. Daher... Versuch macht klug. ;)
     
  6. #5 Hobbystern, 25.04.2014
    Hobbystern

    Hobbystern Wahl-Debianer

    Dabei seit:
    02.02.2007
    Beiträge:
    186
    Zustimmungen:
    0
    Ort:
    westl. Ruhrgebiet
    Ich sehe, Du verstehst was ich meine - ich habe aktuell nur bedingt Zugriff auf die "schwierigen" Eingangsmails und kann das hier nur bedingt reproduzieren, es ist auch nicht mehr in der Größenordnung von "mal eben"....grundsätzlich ist Dein Denkansatz aber richtungsweisend, das heißt für mich 3 Schritte zurück - aber dann schneller zum Ziel.

    Ich sage an dieser Stelle Danke und werde das Ganze in Ruhe heute Abend durchgehen - Feedback Ehrensache. (Danke!)
     
  7. #6 tgruene, 25.04.2014
    tgruene

    tgruene Routinier

    Dabei seit:
    02.02.2012
    Beiträge:
    418
    Zustimmungen:
    0
    Ein Linux oder Unix sollte mit dem Dateinamen, den Du angegeben hast, keine Probleme haben, ein Punkt ist kein Sonderzeichen. Handelt es sich wirklich um dieses Schema? Wenn Du Umlaute in den Namen hast, kann es auch sein, dass Du die 'locale' anpassen musst.
     
  8. #7 Spröde, 25.04.2014
    Spröde

    Spröde Alter Sack

    Dabei seit:
    22.01.2012
    Beiträge:
    173
    Zustimmungen:
    0
    Eine for-Schleife taugt nicht für "schwierige" Dateinamen (es sei denn, man will unbedingt ein prinf %q da rein quetschen). Richtig angewendet, verarbeitet eine while-read-Schleife auch die übelsten Zeichen problemlos. Stichwort: Nullbyte als Trennzeichen.
     
  9. #8 Hobbystern, 25.04.2014
    Hobbystern

    Hobbystern Wahl-Debianer

    Dabei seit:
    02.02.2007
    Beiträge:
    186
    Zustimmungen:
    0
    Ort:
    westl. Ruhrgebiet
    @tgruene: - Ich habe aktuell nur Dateinamen mit vielen Punkten (nur ein Depp benennt Dateien so!) aber wer weiß - vielleicht ist es nächste Woche noch besser und jemand schreibt Tausendfüüüüßßßler als Dateiname ?! ;)
    @Spröde - mit read while habe ich mal mit csv dateien gearbeitet, ich werde das mal ebenfalls in den Kochtopf werfen, aber ..

    Vielleicht gehe ich auch von vornherein einen ganz anderen Weg und normalisiere die Dateinamen direkt nach dem Eintreffen und entpacken der Email, so dass ich die for schleife gar nicht erst erreiche - uudeview nehme ich zum entpacken der Mails - da ist leider seit 2004 "no need to add new features" - sont hätte man ggf. direkt in uudeview eine option verbauen können die solche "kaputten" Dateinamen gar nicht erst weiterbearbeitet, 8 Zeichen und us-zeichensatz wären cool.....heute Abend kommt Rat, denn dann kommt Zeit :-)

    Danke Euch Allen erst einmal....

    Um das warum mal anzusprechen, ich verarbeite Bestellungen von vielen verschiedenen Bestellungen, dabei erhalte ich Emails in welchen eine Bestelldatei liegen muss, eine pdf - diese entpackt das skript, liest "fremddateien" heraus und filtert noch etwas nach potenziellen texten oder wichtigen dokumenten die da nicht hingehören, danach ziehe ich das pdf mit ghostscript einmal auf ocr-lesbarkeit auf und lese es mit gocr zu text um, kommt da nichts sauberes bei raus druckt er die pdf datei (und genau da werden die dateinamen erst schwierig) DIe Ergebnisse von gocr mit 600dpi sind nicht schlecht.....aber noch nicht perfekt und stabil.

    So druckt das Skript die meisten Bestellungen noch sicherheitshalber aus, aber manche können schon direkt maschinell verarbeitet werden....schade das man Kunden nicht zwingen kann eine ordentliche PDF Routine zu nehmen, oder noch viel besser - direkt in eine schnittstelle zu senden...aber das ist leider bei vielen verschiedenen nicht so einfach..

    Grüsse an dieser Stelle!
     
  10. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  11. #9 Hobbystern, 28.04.2014
    Hobbystern

    Hobbystern Wahl-Debianer

    Dabei seit:
    02.02.2007
    Beiträge:
    186
    Zustimmungen:
    0
    Ort:
    westl. Ruhrgebiet
    So, die Lösung die ich hier eingestellt habe ist grundlegender. Ich habe eine Schleife gesetzt die alle eingehenden Dateien erst einmal grundsätzlich normalisiert, so ist auch das Problem von übermorgen hoffentlich schon gebannt.

    Ich habe das Ganze mit "rename" gemacht...

    Danke für Eure Hilfe soweit, ich würde das hier erneut öffnen wenn es nicht ausreicht...! Guten Start in die Woche!
     
  12. #10 Hobbystern, 08.05.2014
    Hobbystern

    Hobbystern Wahl-Debianer

    Dabei seit:
    02.02.2007
    Beiträge:
    186
    Zustimmungen:
    0
    Ort:
    westl. Ruhrgebiet
    Nochmals kurze Rückmeldung - das Kind funktioniert, für die Nachwelt :

    Immer schön auf die ' " ' rund um die Variablen achten, es macht einen Unterschied ob im String heute "arbeit" steht oder morgen "ängstlichezuständeheißensonderzeichen" - wenn das dann ${STRING} ist, kommt mein Skript aus dem Tritt - ist es jedoch "${STRING}" - ist alles gut.

    Ich gehe aktuell hin, rename alle Sonderzeichen aus Dateinamen und verarbeite erst dann, gleichzeitig passe ich auf ' " ' auf...

    Danke an die Helfer hier!
     
Thema:

[FRAGE] Dateinamen normalisieren während sie in einer "for" Schleife sind

Die Seite wird geladen...

[FRAGE] Dateinamen normalisieren während sie in einer "for" Schleife sind - Ähnliche Themen

  1. [Frage] Lieber Highend-Notebook für Zukunft oder Preiswert

    [Frage] Lieber Highend-Notebook für Zukunft oder Preiswert: Hi, ich stehe derzeit vor einer für mich schweren Entscheidung. Ich brauche für die Schule ein Notebook, da meine Eltern nen Teil davon...
  2. [Frage] Opera als Standardbrowser (GNOME)

    [Frage] Opera als Standardbrowser (GNOME): Hi, wie kann ich den Opera 9.21 als Standardbrowser festlegen? - Finde bei Google nichts nutzbares. Gruß und danke Dizzy
  3. [Frage] Programme nach Bootvorgang starten

    [Frage] Programme nach Bootvorgang starten: Hallo, wie kann man erzwingen, dass Programme, zB Skype oder Gaim, direkt nach dem Booten gestartet werden? Danke, Dizzy
  4. [Frage] MX Revolution (Zusatztasten)

    [Frage] MX Revolution (Zusatztasten): Hi, weiß schon einer wie man die Zusatztasten unter Debian Etch nutzen kann? Gruß Dizzy
  5. [Frage] samba und richtlinien

    [Frage] samba und richtlinien: Ich habe gerade gesehen das dies der 2. Thread gleich über einem anderen von mir ist, aber ich hoffe ich werde nicht gleich gelüncht. smb.conf...