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

HOWTO και TIP.
Άβαταρ μέλους
kegior
Newbie
Newbie
Δημοσιεύσεις: 1
Εγγραφή: 22 Νοέμ 2007, 17:46
Distro: Windows
Τοποθεσία: /Ioannina/home :)
Επικοινωνία:

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

Δημοσίευση από kegior » 22 Δεκ 2007, 22:22

Ένα εργαλείο που απουσιάζει από το 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 (η δεύτερη παράμετρος).
Τελευταία επεξεργασία από το μέλος kegior την 23 Δεκ 2007, 00:06, έχει επεξεργασθεί 1 φορά συνολικά.

Άβαταρ μέλους
agorf
Top Poster
Top Poster
Δημοσιεύσεις: 637
Εγγραφή: 07 Νοέμ 2005, 23:44
Distro: Debian testing
Τοποθεσία: Χαλκίδα
Επικοινωνία:

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

Δημοσίευση από agorf » 23 Δεκ 2007, 00:00

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
Τελευταία επεξεργασία από το μέλος agorf την 23 Δεκ 2007, 00:09, έχει επεξεργασθεί 1 φορά συνολικά.

kgeorg
Newbie
Newbie
Δημοσιεύσεις: 8
Εγγραφή: 09 Οκτ 2016, 21:16

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

Δημοσίευση από kgeorg » 28 Δεκ 2007, 13:23

Εγώ χρησιμοποιώ εδώ και χρόνια το rename. π.χ.
rename "OGG" "ogg" *

/usr/bin/rename

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

Κώστας
Τελευταία επεξεργασία από το μέλος kgeorg την 28 Δεκ 2007, 13:24, έχει επεξεργασθεί 1 φορά συνολικά.

Άβαταρ μέλους
Indy
Jr. Member
Jr. Member
Δημοσιεύσεις: 87
Εγγραφή: 29 Νοέμ 2005, 15:29
Distro: Windows
Τοποθεσία: Θεσσαλονίκη
Επικοινωνία:

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

Δημοσίευση από Indy » 28 Δεκ 2007, 16:56

Εδώ, στο Ubuntu 7.10 υπάρχει το rename:

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

$ which rename
/usr/bin/rename
Programs must be written for people to read, and only incidentally for machines to execute.

Απάντηση

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες