Γεια σας.
Λοιπόν, έχω μέσα σε ένα φάκελο περίπου 400 αρχεία το εξής μοτίβο στα ονόματά τους:
- Κώδικας: Επιλογή όλων
Συγκεκριμένη πρόταση για όλα - 1 - κάποια άλλη πρόταση Α.pdf
Συγκεκριμένη πρόταση για όλα - 2 - κάποια άλλη πρόταση B.pdf
Συγκεκριμένη πρόταση για όλα - 3 - κάποια άλλη πρόταση C.pdf
....
Συγκεκριμένη πρόταση για όλα - 400 - κάποια άλλη πρόταση XYZ.pdf
Όπως καταλαβαίνετε, όλα τα αρχεία ξεκινούν με μία ίδια πρόταση, στη συνέχεια έχουν έναν αριθμό και μετά μία άλλη πρόταση που είναι διαφορετική για το καθένα.
Μέσα στον φάκελο υπάρχουν και άλλα άσχετα αρχεία.
Αυτό που θέλω να κάνω είναι με μία εντολή να αφαιρεθεί από όλα η συγκεκριμένη πρόταση στην αρχή του ονόματος και να μείνει το υπόλοιπο. Δηλαδή να γίνουν έτσι:
- Κώδικας: Επιλογή όλων
1 - κάποια άλλη πρόταση Α.pdf
2 - κάποια άλλη πρόταση B.pdf
3 - κάποια άλλη πρόταση C.pdf
....
400 - κάποια άλλη πρόταση XYZ.pdf
Έχω καταλήξει στο εξής:
-
Μορφοποιημένος Κώδικας: Επιλογή όλων
-
ls -1 'Συγκεκριμένη πρόταση για όλα - '* | while read file ; do mv $file "`echo $file | sed 's/\Συγκεκριμένη\ πρόταση\ για\ όλα\ -\ //'`" ;done
Aλλά ως αποτέλεσμα παίρνω το:
- Κώδικας: Επιλογή όλων
mv: target ‘1 - κάποια άλλη πρόταση Α.pdf’ is not a directory
mv: target ‘2 - κάποια άλλη πρόταση B.pdf’ is not a directory
mv: target ‘3 - κάποια άλλη πρόταση C.pdf’ is not a directory
....
mv: target ‘400 - κάποια άλλη πρόταση XYZ.pdf’ is not a directory
Δηλαδή αντιμετωπίζει τον προορισμό ως φάκελο και όχι ως αρχείο, όπως καταλαβαίνω δηλαδή.
Δοκίμασα και με την παράμετρο [-T] στο mv αλλά δεν άλλαξε κάτι.
Εκτελώντας την εντολή ενώ έχω αντικαταστήσει το mv με το echo για λόγους ελέγχου, δηλαδή έτσι:
-
Μορφοποιημένος Κώδικας: Επιλογή όλων
-
ls -1 'Συγκεκριμένη πρόταση για όλα - '* | while read file ; do echo $file "`echo $file | sed 's/\Συγκεκριμένη\ πρόταση\ για\ όλα\ -\ //'`" ;done
Παίρνω το επιθυμητό αποτέλεσμα, δηλαδή το όνομα του αρχείου πριν και όπως το θέλω μετά:
- Κώδικας: Επιλογή όλων
Συγκεκριμένη πρόταση για όλα - 1 - κάποια άλλη πρόταση Α.pdf 1 - κάποια άλλη πρόταση Α.pdf
Συγκεκριμένη πρόταση για όλα - 2 - κάποια άλλη πρόταση B.pdf 2 - κάποια άλλη πρόταση B.pdf
Συγκεκριμένη πρόταση για όλα - 3 - κάποια άλλη πρόταση C.pdf 3 - κάποια άλλη πρόταση C.pdf
.... ....
Συγκεκριμένη πρόταση για όλα - 400 - κάποια άλλη πρόταση XYZ.pdf 400 - κάποια άλλη πρόταση XYZ.pdf
Γνωρίζει κανείς που είναι το λάθος και δεν γίνεται μετονομασία των αρχείων με την mv;
Ή έναν διαφορετικό τρόπο για να αφαιρέσω από το όνομα των αρχείων την πρώτη πρόταση που είναι ίδια σε όλα; Εκτός από το να τα κάνω ένα ένα!

Kατά προτίμηση να είναι στο bash η λύση, κυρίως για λόγους εκμάθησης. Αλλά οποιοσδήποτε τρόπος είναι ευπρόσδεκτος.
Ευχαριστώ εκ των προτέρων.