Προς το περιεχόμενο

Recode σε πολλά txt αρχεία?


Koultouras

Προτεινόμενες αναρτήσεις

Δημοσ.

Έχω καμιά 200 αριά .txt αρχεία από την εποχή των παραθύρων και θέλω να τα κάνω recode σε utf8.

Πώς μπορώ να τα κάνω μαζικά και όχι ένα ένα;

Δημοσ.

Βασικά θέλω να κάνω recode σε έναν φάκελο, που έχει μέσα άλλους φακέλους και μέσα σε αυτούς τους φακέλους βρίσκονται τα txt.

Είναι πολλά κατηγοριοποιημένα αρχεία που δεν μπορώ να τα πετάξω όλα σε ένα φάκελο.

Δυστυχώς θέλω πολλά ε;

Δημοσ.

Μπορείς να δώσεις στον αρχικό φάκελο την εντολή find . και στην συνέχεια να περάσεις την έξοδο σε όποια άλλη εντολή θέλεις με pipe line. Η find . θα σου επιστρέψει όλα τα αρχεία που περιλαμβάνονται στους υποφακέλους. Π.χ.

 

folder1/folder2/txt1.txt

folder1/folder1/txt2.txt

folder1/folder1/txt3.txt

folder1/folder2/txt1.txt

folder1/folder2/txt2.txt

folder1/folder3/txt1.txt

 

Από την στιγμή που θα έχεις το path από κάθε αρχείο μπορείς να το περάσεις από την iconv και να του αλλάξεις τα φώτα.

 

iconv

 

find

Δημοσ.

Να ρωτήσω κάτι. Δυστυχώς δε βρίσκομαι μπροστά σε Ubuntu τώρα για να μπορέσω να δοκιμάσω, αλλά αν πχ δώσεις πολλά αρχεία στην εντολή recode δε θα γίνει αυτό?

 

πχ recode iso-8859-7..utf-8 file1 file2 file3 ....

ή recode iso-8859-7..utf-8 *.*

 

Απλά ξέρω για τη recode ότι πρέπει να του δώσεις και το αρχικό encoding. πχ, αν το αρχείο σου το αρχικό είναι iso-8859-7 και δώσεις στην εντολή πχ recode iso-8859-1..utf-8 file τότε δε θα δώσει αποτέλεσμα. Αλλά νομίζω και στην iconv ισχύει αυτό. Δηλαδή νομίζω δε γίνεται να έχεις σε έναν φάκελο αρχεία σε διαφορετικές κωδικοποιήσεις και να τα μετατρέψεις μαζικά σε utf-8.

Δημοσ.
Δυστυχώς θέλω πολλά ε;

Τίποτα δεν είναι δύσκολο για το Unix! ;) Μπορείς να το κάνεις όπως λέει ο firewalker, π.χ. για να μετατρέψεις κάθε αρχείο .txt από iso-8859-7 σε utf-8 αποθηκεύοντάς το στον ίδιο κατάλογο με το αρχικό και με όνομα "conv-"+αρχικό-όνομα.txt, θα μπορούσες να δώσεις:

 

>[color="DarkRed"]#!/bin/sh[/color][color="Green"]
for file in `find /path/to/files -name "*.txt"`; do
pathname="${file%\/*}"
filename="${file##*\/}"
iconv -f ISO-8859-7 -t UTF-8 $file > $pathname"/conv-"$filename 
done[/color]

 

PS. χρήσιμο site για regular expressions: http://www.regexp.info

Δημοσ.

Παιδιά σας ευχαριστώ πολύ.

Τελικά

Τίποτα δεν είναι δύσκολο για το Unix!
:) :)

Έκανα την δουλειά μου πολύ βαμβάκι και πολύ εύκολα.

Ευχαριστώ !!!

  • 2 εβδομάδες αργότερα...
Δημοσ.

Επαναφέρω το θέμα γιατί ένα άλλο post σήμερα μου θύμησε να τσεκάρω αυτό που πρότεινα παραπάνω μερικές μέρες πριν.

 

Λοιπόν, όντως γίνεται μαζικό recoding αρχείων με την εντολή recode.

 

>πχ
recode iso-8859-7..utf-8 file1.txt file2.txt file3.txt
ή
recode  iso-8859-7..utf-8 * μέσα στον φάκελο με τα αρχεία txt

 

Προϋπόθεση να έχουν όλα αρχικά το ίδιο encoding, και να ξέρουμε πιο είναι αυτό.

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...