Σελίδα 1 από 1

TIP Mαζική μετονομασία

Δημοσιεύτηκε: 22 Δεκ 2007, 22:22
από kegior
Ένα εργαλείο που απουσιάζει από το Linux είναι εκείνο που στο dos γνωρίζουμε ως ren (από το rename). Ωστόσο, η απουσία του από το BASH δεν αποτελεί παράλειψη. Η διαδικασία της μετονομασίας ενός ή πολλών αρχείων μπορεί να πραγματοποιηθεί με τη βοήθεια άλλων εργαλείων που υπάρχουν ήδη. Η αλλαγή ονόματος ενός αρχείου ισοδυναμεί με τη μετακίνηση του αρχείου (move) στην ίδια θέση, αλλά με διαφορετικό όνομα. Για παράδειγμα για να μετονομάσουμε το αρχείο file1 σε temp1 θα πρέπει να γράψουμε:

Κώδικας: Επιλογή όλων

mv file1 temp1
Όμως τι γίνεται όταν θέλουμε να αλλάξουμε τα ονόματα πολλών αρχείων; Παρακάτω φαίνεται ένα απλό script που επιτρέπει την αλλαγή της επέκτασης σε ένα πλήθος αρχείων.

Κώδικας: Επιλογή όλων

 #!bin/bash
 for i in *.$1; do
   mv “$i” “’basename “$i” .$1’.$2”
 done 
Ας υποθέσουμε ότι έχουμε ονομάσει το παραπάνω σενάριο ren. Αν για παράδειγμα διαθέτουμε μια συλλογή τραγουδιών με επέκταση .OGG και θέλουμε να την αλλάξουμε σε .ogg δεν έχουμε παρά να εκτελέσουμε το ακόλουθο: ren OGG ogg
Το σενάριο θα βρει όλα τα αρχεία με επέκταση .OGG (η πρώτη παράμετρος) και θα τα μετακινήσει στην ίδια θέση, αλλάζοντας την επέκταση σε .ogg (η δεύτερη παράμετρος).

Re: HOWTO Mαζική μετονομασία

Δημοσιεύτηκε: 23 Δεκ 2007, 00:00
από agorf
Thanks για το tip. :)

Να σημειώσω ότι σενάριο = script.

Επίσης, είσαι σίγουρος ότι είναι σωστό; Συγκεκριμένα, έχω αμφιβολίες για τη γραμμή mv μέσα στο loop. Νομίζω θα έπρεπε να είναι:

Κώδικας: Επιλογή όλων

   mv "$i" $(basename "$i" .$1).$2
ή

Κώδικας: Επιλογή όλων

   mv "$i" `basename "$i" .$1`.$2
(Σημείωση: Χρήση backticks.)

Και κάτι σχετικό βασισμένο σε Ruby και regular-expressions (πιο δυνατό): http://agorf.gr/code/rn.rb

Re: TIP Mαζική μετονομασία

Δημοσιεύτηκε: 28 Δεκ 2007, 13:23
από kgeorg
Εγώ χρησιμοποιώ εδώ και χρόνια το rename. π.χ.
rename "OGG" "ogg" *

/usr/bin/rename

Έχω SUSE 10.1. Δεν υπάρχει σε άλλες διανομές;

Κώστας

Re: TIP Mαζική μετονομασία

Δημοσιεύτηκε: 28 Δεκ 2007, 16:56
από Indy
Εδώ, στο Ubuntu 7.10 υπάρχει το rename:

Κώδικας: Επιλογή όλων

$ which rename
/usr/bin/rename