Dr.Fuzzy Δημοσ. 9 Φεβρουαρίου 2017 Δημοσ. 9 Φεβρουαρίου 2017 Λοιπόν όσο και να το έψαξα δε βρήκα κάτι. Έστω ότι έχουμε πχ, 10 φακέλους που ο καθένας περιέχει κώδικες ενός project σε διάφορες φάσεις, project_1, project_testing, κλπ (version management γιοκ τότε...). Η ερώτηση λοιπόν είναι η εξής. Υπάρχει κάποιο tool ή script που να σκανάρει όλους τους φακέλους και να δημιουργεί βάσει του file date ένα progress graph για κάθε file ξεχωριστά (πχ, ανάλογα με το commit graph σε git) ; Γραφικά θα ήταν ακόμα καλύτερα αλλά και με text output στο terminal (πχ, όπως το tree) κάνω δουλειά.
mad-proffessor Δημοσ. 9 Φεβρουαρίου 2017 Δημοσ. 9 Φεβρουαρίου 2017 Αμφιβάλλω αν υπάρχει κάτι τέτοιο, να σου πω την αληθεια πιο πολύ για feature request στο Linus μου ακούγεται για το git.
Dr.Fuzzy Δημοσ. 9 Φεβρουαρίου 2017 Μέλος Δημοσ. 9 Φεβρουαρίου 2017 Φανταζομαι θα μπορούσε να υλοποιηθεί κάπως με find, awk regular expressions
pmav99 Δημοσ. 9 Φεβρουαρίου 2017 Δημοσ. 9 Φεβρουαρίου 2017 Βασικά δεν κατάλαβα τι ακριβώς ζητάς Ο κάθε φάκελος είναι ένα (git) repository ή όχι; Γιατί τι μία λες ότι «version management γιοκ» και μετά μιλάς για commits. Επίσης, το file date τι σημασία έχει και κυρίως τι πληροφορία μπορεί να σου δώσει; BTW, ίσως στο thread του προγραμματισμού να πάρεις περισσότερες γνώμες.
Dr.Fuzzy Δημοσ. 9 Φεβρουαρίου 2017 Μέλος Δημοσ. 9 Φεβρουαρίου 2017 Όχι δεν είναι git (μακάρι να είχα προνοήσει τότε, γιαυτό και λέω «version management γιοκ»!). Το file date έχει μεγάλη σημασία διότι μου δείχνει πότε έγινε modified το αρχείο (είμαστε σε NTFS!). Άρα αν έχω όπως έγραψα πχ, 10 φακέλους ενός προτζεκτ σε διάφορες φάσεις, με αυτόν τον τρόπο μπορώ να δω την "εξέλιξη" του x source file στο χρόνο και σε ποιο folder ανήκει. Ξέχνα τα commits και το git, απλά ανάφερα το commit graph, ως προς τον τρόπο εμφάνισης καθαρά όχι ως προς την λειτουργία.
mad-proffessor Δημοσ. 9 Φεβρουαρίου 2017 Δημοσ. 9 Φεβρουαρίου 2017 Τότε θες κάποια γλώσσα με plot library που θα κάνει walk τα directories, θα βρίσκει το access time των αρχείων, θα τα ταξινομεί και θα κάνει plot τα γραφήματα. Python,perl οι επιλογές σου.
Dr.Fuzzy Δημοσ. 9 Φεβρουαρίου 2017 Μέλος Δημοσ. 9 Φεβρουαρίου 2017 Τότε θες κάποια γλώσσα με plot library που θα κάνει walk τα directories, θα βρίσκει το access time των αρχείων, θα τα ταξινομεί και θα κάνει plot τα γραφήματα. Python,perl οι επιλογές σου. Ναι ΟΚ το γνωρίζω, αλλά δυστυχώς δεν έχω χρόνο για να κάτσω κάνω develop κάτι τέτοιο. Η ερώτηση μου είναι αν υπάρχει κάτι έτοιμο που μπορώ να βρω.
pmav99 Δημοσ. 9 Φεβρουαρίου 2017 Δημοσ. 9 Φεβρουαρίου 2017 (επεξεργασμένο) Θα συμφωνήσω και εγώ ότι μάλλον μόνο manually μπορείς να το κάνεις αυτό. Σε python3 πχ για το walking και τις ημερομηνίες μπορείς να τα πάρεις κάπως έτσι: import pathlib import pprint def get_filepaths(path): """ Return a (recursive) list with all the files contained in path """ for root, dirs, filenames in os.walk(path): root = pathlib.Path(root) for filename in filenames: yield root / filename project_directories = [ "/path/to/dir1", "/path/to/dir2", ] for project_dir in project_directories: project_files_ctimes = {path: path.stat().st_ctime for path in get_filepaths(project_dir)} pprint.pprint(project_files_ctimes) print() ενώ για τα diffs μπορείς να δεις το difflib https://pymotw.com/3/difflib/ Επεξ/σία 9 Φεβρουαρίου 2017 από pmav99
Dr.Fuzzy Δημοσ. 9 Φεβρουαρίου 2017 Μέλος Δημοσ. 9 Φεβρουαρίου 2017 (επεξεργασμένο) Thanx, θα το δω, αλλά δυστυχώς δεν έχω χρόνο για να κάτσω να το φτιάξω. Τα modification times θα μπορούσα να τα πάρω recursively απλά με ls -Rtla Επεξ/σία 10 Φεβρουαρίου 2017 από Dr.Fuzzy
Dr.Fuzzy Δημοσ. 10 Φεβρουαρίου 2017 Μέλος Δημοσ. 10 Φεβρουαρίου 2017 Στο παρακάτω script μου χτυπάει το find, διότι προφανώς είναι σαν να του δίνω find . -name arg1 arg2 arg3 ενώ δε δέχεται multiple args. #!/bin/bash cmp=$(comm -12 <(ls -F $1) <(ls -F $2)) find . -name "$cmp" Πως μπορώ να περάσω όλο το cmp pipeline στο find;
pmav99 Δημοσ. 10 Φεβρουαρίου 2017 Δημοσ. 10 Φεβρουαρίου 2017 (επεξεργασμένο) Υποθέτω ότι θες να βρεις ποια αρχεία είναι κοινά μεταξύ δύο φακέλων, σωστά; Εμπνεόμενος από εδώ: http://unix.stackexchange.com/a/124896/37579 cd /tmp mkdir -p proj2/{dir1,dir2}/ touch proj{1,2}/dir{1,2}/source{1,2} touch proj1/dir1/source3 touch proj2/dir2/source3 # output $ tree proj* proj1 ├── dir1 │ ├── source1 │ ├── source2 │ └── source3 └── dir2 ├── source1 └── source2 proj2 ├── dir1 │ ├── source1 │ └── source2 └── dir2 ├── source1 ├── source2 └── source3 comm -12 <(find ./proj1/ -type f -printf '%P\n' | sort) <(find ./proj2/ -type f -printf '%P\n' | sort) # output dir1/source1 dir1/source2 dir2/source1 dir2/source2 Επεξ/σία 10 Φεβρουαρίου 2017 από pmav99 1
Dr.Fuzzy Δημοσ. 10 Φεβρουαρίου 2017 Μέλος Δημοσ. 10 Φεβρουαρίου 2017 Ωραίος! Ναι και για την ακρίβεια ο τρόπος που πήγα να το κάνω ήταν να βρω αρχικά ποια αρχεία είναι κοινά μεταξύ n ορισμένων φακέλων (comm δουλεύει μια χαρά) και στη συνέχεια find το pipeline του comm για να μου πει σε ποια dirs βρίσκονται (εδώ είχα το πρόβλημα).
pmav99 Δημοσ. 10 Φεβρουαρίου 2017 Δημοσ. 10 Φεβρουαρίου 2017 Έτσι όπως πήγες να το κάνεις ήθελες πολλάπλά '-name filename1 -name filename2 ...'. Ίσως να γίνεται με xargs αυτό (δηλαδή μια κλήση της find για κάθε αρχείο), αλλά νομίζω ότι αυτό που προτείνω είναι καλύτερο γιατί σου επιτρέπει να έχεις κοινά ονόματα αρχείων σε διαφορετικούς φακέλους.
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα