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

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


Koultouras

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

Βασικά θέλω να κάνω 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, και να ξέρουμε πιο είναι αυτό.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

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

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

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