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

[INFO] Η δύναμη της Κονσόλας


Manos-Sx

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

  • Απαντ. 889
  • Δημ.
  • Τελ. απάντηση

Συχνή συμμετοχή στο θέμα

μπορεί να το κάνεις με regular expressions

πχ σε bash

regex="Criminal\.Minds\.S([0-9]+)E([0-9]+).*"
for f in *; do if [[ $f =~ $regex ]]; then echo ${BASH_REMATCH[1]} ${BASH_REMATCH[2]}; fi; done

μου δίνει

08 01
08 02

έχοντας δύο αρχεία

Criminal.Minds.S08E01.720p.HDTV.X264-DIMENSION
Criminal.Minds.S08E02.720p.HDTV.X264-DIMENSION

αν αντί για echo βάλεις κανένα mv έγινες

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

Criminal.Minds.S08E01.720p.HDTV.X264-DIMENSION

Πως μπορώ να τα μετονομάσω σε αυτό το format: "Criminal Minds - 8x01 - "

 

Μετά την δεύτερη παύλα θα βάλω το όνομα του επεισοδίου. Προφανώς θέλω να αυξάνει και ο αριθμός του επεισοδίου 01 02 03 κλπ. Το srt θέλω να έχει το ίδιο όνομα με το επεισόδιο.

 

% cd /tmp 
% mkcd cm 
% for i in $(seq -w 01 04); do
> touch Criminal.Minds.S08E${i}.720p.HDTV.X264-DIMENSION.mkv
> touch Criminal.Minds.S08E${i}.720p.HDTV.X264-DIMENSION.srt 
> done

% ls
Criminal.Minds.S08E01.720p.HDTV.X264-DIMENSION.mkv
Criminal.Minds.S08E01.720p.HDTV.X264-DIMENSION.srt
Criminal.Minds.S08E02.720p.HDTV.X264-DIMENSION.mkv
Criminal.Minds.S08E02.720p.HDTV.X264-DIMENSION.srt
Criminal.Minds.S08E03.720p.HDTV.X264-DIMENSION.mkv
Criminal.Minds.S08E03.720p.HDTV.X264-DIMENSION.srt
Criminal.Minds.S08E04.720p.HDTV.X264-DIMENSION.mkv
Criminal.Minds.S08E04.720p.HDTV.X264-DIMENSION.srt

% rename "720p.HDTV.X264-DIMENSION." "" Crim* 
% ls
Criminal.Minds.S08E01.mkv  Criminal.Minds.S08E02.srt  Criminal.Minds.S08E04.mkv
Criminal.Minds.S08E01.srt  Criminal.Minds.S08E03.mkv  Criminal.Minds.S08E04.srt
Criminal.Minds.S08E02.mkv  Criminal.Minds.S08E03.srt

% rename ".S08E" " - 8x" Crim*
% ls
Criminal.Minds\ -\ 8x01.mkv  Criminal.Minds\ -\ 8x03.mkv
Criminal.Minds\ -\ 8x01.srt  Criminal.Minds\ -\ 8x03.srt
Criminal.Minds\ -\ 8x02.mkv  Criminal.Minds\ -\ 8x04.mkv
Criminal.Minds\ -\ 8x02.srt  Criminal.Minds\ -\ 8x04.srt

% rename "." " " C*             
% ls
Criminal\ Minds\ -\ 8x01.mkv  Criminal\ Minds\ -\ 8x03.mkv
Criminal\ Minds\ -\ 8x01.srt  Criminal\ Minds\ -\ 8x03.srt
Criminal\ Minds\ -\ 8x02.mkv  Criminal\ Minds\ -\ 8x04.mkv
Criminal\ Minds\ -\ 8x02.srt  Criminal\ Minds\ -\ 8x04.srt
Προσοχή στα κενά "". Το συγκεκριμένο rename είναι η απλή έκδοση του util-linux. Υπάρχουν επίσης ένα άλλο rename καθώς και το zmv του ZSH τα οποία υποστηρίζουν regular expressions οπότε μπορείς να κάνεις όσο πολύπλοκες μετατροπές θέλεις με μία εκτέλεση.

 

Edit: Με πρόλαβε ο warlock.

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

σε αυτό που έγραψα βέβαια δεν σκέφτηκα τους υπότιτλους οπότε πρέπει να συμπεριλιφθεί και αυτό

μπορείς πχ στο regular expression να κάνεις capture την κατάληξη σε τρίτο group

 

επίσης αν είναι ψιλοπαρόμοια και τα ονόματα σε άλλες σειρές μπορείς να βγάλεις το καρφωτο criminal minds

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

@warlock 

 

Με το echo όντως δουλεύει αλλά με το mv όχι. mv cannot stat 08 no such file or directory

 

@imitheos 

 

Δεν κατάλαβα τι πρέπει να κάνω. Μπορείς να μου το εξηγήσεις;  :unsure:

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

regex="Criminal\.Minds\.S([0-9]+)E([0-9]+).*(\.[a-z]+)"
for f in *; do if [[ $f =~ $regex ]]; then mv $f Criminal\ Minds\ -\ ${BASH_REMATCH[1]}x${BASH_REMATCH[2]}${BASH_REMATCH[3]}; fi; done


μόλις έπαιξε, και με τα file extentions

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

το regular expression λέει, ταίριαξέ μου ό,τι

  • ξεκινάει με Criminal.Minds.S
  • μετά έχει πάνω από ένα χαρακτήρες από 0 έως 9
  • Ε
  • πάνω από ένα χαρακτήρεw 0 έως 9
  • μετά οποιουσδήποτε χαρακτήρες
  • και τελειώνει σε . και πάνω από ένα χαρακτήρες a έως z

οι παρενθέσεις κάνουν capture τα κομμάτια που θές σε ένα array bash_rematch

 

μετά κάνεις loop όλα τα αρχεία, στο if με το =~ τσεκάρει το regular expression, αν ταιριάζει κάνει mv το αρχείο και το καινούριο όνομα είναι τα groups που έχεις κάνει capture πιο πριν με το φορμάτ που θες

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

  • 2 εβδομάδες αργότερα...
  • 3 μήνες μετά...

nice!

weather() {
    if [ ! -z $1 ]
    then
        curl -4 http://wttr.in/$1
    else
        curl -4 http://wttr.in/Athens
    fi
}

Αντικαταστήσετε το "Athens" με την πόλη που μένετε και θα μπορείτε με σκέτο "weather" να έχετε την πρόβλεψη στην πόλη σας και με 'weather CityName' την πρόβλεψη στην πόλη που σας ενδιαφέρει

 

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

Αντίστοιχα

curl -s -4 http://wttr.in/Athens |head -n 7

Μας επιστρέφει μόνο όνομα πόλης και τρέχουσες συνθήκες.. (για κανένα conky)

 

βιάστηκα να το πω, και μόλις πήγα να το υλοποιήσω μου έβγαλε θεματάκια...

 

χρησιμοποιώ αυτή την εντολή για να κατεβάσω τον καιρό και να καθαρίσω τους χρωματισμούς.

curl -s -4 http://wttr.in/Thessaloniki | head -n 7 | tail -n 5|sed -r "s:\x1B\[[0-9;]*[mK]::g"

αλλά μου εμφανίζει post-97979-0-44377900-1456138494_thumb.png

 

 

Καμιά καλύτερη ιδέα για να παίξει το παραπάνω...

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

  • 1 μήνα μετά...
  • 2 μήνες μετά...

μπορεί να με κατατοπίσει κάποιος σε ποιές εντολές να στραφώ για να μπορώ να εξάγω απο αυτή τη σελίδα http://www.airdates.tv σειρές και την αντίστοιχη ημερομηνία προβολής τους?

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

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα

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