Δημοσιεύτηκε: 17 Ιαν 2010, 23:31
από sokoban4ever
ας πούμε ότι έχουμε πολλούς φακέλους (5 10 ακόμα και εκαντοτάδες )
για παράδειγμα
βιντεάκια_τάδε βιντεάκια_τέτοια βιντεάκια_απο_κείνα
και σε κάθε φάκελο (ακόμα και άλλους υποφάκελους και αρχεία..)
έχουμε ένα σωρό αρχεία (multipart) rar
πχ
blablabla.part1.rar
blablabla.part2.rar
blablabla.part3.rar

και ούτο κάθε εξής
Αυτά έχουν ένα κοινό χαρακτηριστικό (όσο αναφορά το ονομασία τους) έχουν όλα από ένα αρχείο part1.rar ή part01.rar ή part001.rar (κλπ)
χρειάστηκα να αποσυμπιέσω πολλά τέτοια αρχεία (συνολικά όλα τα rar μαζι 256 και τα part1.rar 51) σε remote server και που δεν μου επιτρεπόνταν να κάνω X11 forwarding (εφαρμογές με GUI μέσω ssh )

λοιπόν πήγα στο κατάλογο που τα περιέχε όλα και έκανα
Κώδικας: Επιλογή όλων
find -type f -regextype posix-egrep -regex "^.*[^1]1.rar$" -execdir unrar e -kb {} \;

to regex βρίσκει αυτά που αρχίσουν τελειώνουν με 1.rar αλλά αποφεύγει τα 11.rar (μας αρκούν τα ΟΤΙΔΗΠΟΤΕ001.rar ΟΤΙΔΗΠΟΤΕ01.rar και ΟΤΙΔΗΠΟΤΕ1.rar )
μέσα σε 20 περίπου δευτερόλεπτα είχε τελειώσει η αποσυμπίεση των 256 rar αρχείων

έπειτα για να τα μαζέψω όλα στον σε ένα κατάλογο έκανα
Κώδικας: Επιλογή όλων
find -type f -cmin -2 -not -iname "*.rar" -execdir mv {} ~/Desktop/MyKatalogos/ \;


το cmin -2 χρειάστηκε για να βρει αρχεία που μόλις μέχρι 2 λεπτά είχε αλλάξει το timestamp τους (μετά από 5 λεπτά πχ θα έβαζα 7 λεπτά )
γιατι υπήρχαν και άλλα που δεν ήταν rar (όρισμα -not -iname "*.rar" ) αλλά είχαν φτιαχτεί (το timestamp ή status ) παλιότερα.
άλλα ήταν pdf άλλα html αλλά tex και ps και άλλα ... (με άλλες καταλύξεις ) οπότε προτιμήσα όλα τα αρχεία που δεν ήταν rar και είχαν δημιουργηθεί
μόλις 2 λεπτά πριν .

τα παραπάνω δουλεύουν και για rar αρχεία με rar.001 rar.002 κλπ καταλήξεις
φτάνει μόνο
την πρώτη εντολή να την κάνουμε
Κώδικας: Επιλογή όλων
find -type f -regextype posix-egrep -regex "^.*1$" -execdir unrar e -kb {} \;

και την δεύτερη
Κώδικας: Επιλογή όλων
find -type f -cmin -2 -not -iname "*.rar*" -execdir mv {} ~/Desktop/MyKatalogos/ \;


Αυτά :)