Μετατρέποντας τα ελληνικά filenames σε greeklish

Το scriptaki αυτό μετονομάζει τα αρχεία ενός directory μετατρέποντας τα ελληνικά σε greeklish, τα κενά σε underscores και τα κεφαλαία σε μικρά χωρίς να πειράζει τους υπόλοιπους χαρακτήρες. Μπορεί να χρησιμοποιηθεί σε ISO-8859-7 και UTF-8 filenames μόνο.

Παραδείγματα:

Directory με αρχεία που θέλουμε να μετονομάσουμε:

$ ls example_dir/
Ελληνικότατο FileνάMe.Txτ Λόλα Γλαδιόλα - Τεράστιο Souxe.Mp3
$ ./cleanup_filenames example_dir/
$ ls example_dir/
ellinikotato_filename.txt lola_gladiola-terastio_souxe.mp3

Παρακάτω είναι ο κώδικας.

4 thoughts on “Μετατρέποντας τα ελληνικά filenames σε greeklish”

  1. Μπράβο για το πρόγραμμα εντολών.

    Αναφέρεσαι σε αρχική κωδικοποίηση iso-8859-7.
    Μπορείς να δώσεις ένα παράδειγμα που κάποιος έχει τέτοια αρχεία στην κωδικοποίηση αυτή; Με μια πρόσφατη διανομή με κωδικοποίηση συστήματος UTF-8, νομίζω ότι τα ελληνικά ονόματα, όταν φαίνονται ως ελληνικά, είναι πάντα σε κείμενο UTF-8 (είτε πραγματικά UTF-8, είτε από μετατροπή λόγω παραμέτρου κατά την προσάρτηση).

    1. Δεν κατάλαβα τι ρωτάς ακριβώς. Το πρόγραμμα κάνει το εξής:
      $./cleanup_filenames directory_name
      και μετονομάζει όλα τα αρχεία στο directory directory_name έτσι που να μην περιέχουν κανένα ελληνικό χαρακτήρα, κανένα κεφαλαίο γράμμα και κανένα κενό.
      (Τα ελληνικά γίνονται greeklish, τα κεφαλαία μικρά και τα κενά underscores.)

      Επειδή τώρα τα ελληνικά ονόματα αρχείων μπορεί να έχουν είτε ISO είτε UTF κωδικοποίηση (ανεξάρτητα από την κωδικοποίηση που έχει το terminal ή ο filemanager που χρησιμοποιείς εσύ στο εκάστοτε λειτουργικό για να τα δεις) προτού κάνω τη μετονομασία ενός filename, ελέγχω αν η κωδικοποίηση του filename (όχι του περιεχομένου του αρχείου – την οποία δεν πειράζω) είναι well-formed UTF-8 και αν δεν είναι, θεωρώ ότι το αρχείο είναι ISO.

      Για παράδειγμα αν έχω αυτά τα 2 αρχεία:
      ελληνικό iso filename και
      ελληνικό utf filename

      (δε θα φαίνονται και τα 2 σωστά σε κάποιο terminal που έχει είτε iso είτε utf-8 encoding)

      αφού τρέξεις το cleanup_filenames για το directory που τα περιέχει θα πάρεις αποτέλεσμα
      elliniko_iso_filename
      elliniko_utf_filename

      Αυτά 🙂
      Ελπίζω να σε κάλυψα…

      btw σε λίγο θα ανεβάσω τη recursive έκδοση του cleanup_filenames για να κάνει το ίδιο και σε όλα τα subdirectories του directory…

      Αααα, αν εννοείς που είπα να σώσεις το αρχείο με τον κώδικα σε ISO-8859-7, είναι για να δουλεύει σωστά μια εντολή που έχω μέσα με το ελληνικό αλφάβητο γιατί με τα bytes του UTF-8 μπερδεύεται 🙂 δεν έχει καμιά σχέση με τα υπόλοιπα και με το πώς τρέχει το πρόγραμμα… 🙂

    2. Χαμαιλεοντειο Φολιδοκαυλο Γαλαξιακο Σεληνιασμενο Ψωλοροπαλοφορο Γαμωδρακακι-Κουταβι. says:

      YES!

      ΤΟ ΑΠΟΚΩΔΙΚΟΠΟΙΗΣΑ!

      Εννοει “by character conversion due to a mount-time parameter”

      Ε ειμαι θεος!

      1. Aφού όλοι καταλαβαίνουν ποιος είσαι γιατί δε βάζεις κανένα nickname της προκοπής?
        Bάνδαλε…

Leave a Reply to hikiko Cancel reply

Your email address will not be published. Required fields are marked *