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

Script αναζητησης βαση του extension


chex

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

μπορει καποιος να μου πει που μπορω να ψαξω για να δω πως θα φτιαξω ενα script που θα κανει ελεγχο στο extension δυο αρχειων. Μηπως πρεπει να βάλω ρουτινες της C για να κανω τον ελεγχο?

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

  • Extension εννοείς τους χαρακτήρες που ακολουθούν την τελευταία τελεία κάποιου Filename, έτσι;
     
     
  • Δεν κατάλαβα ακριβώς τι θέλεις να κάνεις. Αναζήτηση βάση του extension μπορείς να το κάνεις απλά με την find -π.χ. για να βρεις όλα τα αρχεία που τελειώνουν σε case insensitive ".ext",
    >find /path/to/search/in -iname "*.ext"


    Αλλά μετά λες "έλεγχο στο extension δύο αρχείων" -δηλαδή;
     
    Κάτι σαν:
     

    >if [ ${file1##*.} == ${file2##*.} ]; then echo "τα δύο αρχεία έχουν ίδιο extension"; fi


    ;

 

Πάντως ό,τι και αν θέλεις να κάνεις, υπάρχουν μια ντουζίνα τρόποι για να το κάνεις από οποιοδήποτε shell, είτε μέσω του buit-in expansion και regular expression support, είτε με τη χρήση εξωτερικών εργαλείων -όπως η awk. Δε θα χρειαστεί να χρησιμοποιήσεις C ή οποιαδήποτε άλλη γλώσσα.

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

αυτο που θελω να κανω ειναι ενα προγραμματακι που θα παιρνει σαν παραμετρους δυο φακελους και θα τρεχει την εντολη diff. σ αυτο το σημείο θελω να γινεται η σιγκριση μονο σε αρχεια κοινου τυπου.

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

Δηλαδή αν έχεις ένα φάκελο Α με τα αρχεία 1.doc και 2.doc,

κι ένα φάκελο Β με τα αρχεία 3.doc και 4.doc,

τι ακριβώς θες να συγκρίνει;

 

Συνήθως συγκρίνονται αρχεία που έχουν και το ίδιο όνομα, όχι μόνο την ίδια επέκταση...

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

Δηλαδή αν έχεις ένα φάκελο Α με τα αρχεία 1.doc και 2.doc,

κι ένα φάκελο Β με τα αρχεία 3.doc και 4.doc,

τι ακριβώς θες να συγκρίνει;

 

Συνήθως συγκρίνονται αρχεία που έχουν και το ίδιο όνομα, όχι μόνο την ίδια επέκταση...

 

οταν δινεις δυο φακέλους στη diff συγκρινει ενα προς ενα το ενα αρχειο με τα αρχεια του αλλου. αν μεσα στο φακελο εχεις exe και αλλα binary προσπαθει να τα συγκρινει και αυτα. εγω θελω να κανει ελεγχο ας πουμε αν ο ΦΑΚΕΛΟΣ_Α εχει *.doc και *1.pdf και ΦΑΚΕΛΟΣ_Β με *.exe και *2.pdf , να εκτελειται η diff μονο οταν το *1.pdf του ΦΑΚΕΛΟΣ_Α συναντησει το *2.pdf του ΦΑΚΕΛΟΥ_Β.

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

  • Μπορείς να βάζεις τα αρχεία κάθε καταλόγου σε ένα array, π.χ.:
    >
    dir1_files=($(ls $dir1))
    dir2_files=($(ls $dir2))
    


     
    και να συγκρίνεις αναδρομικά κάθε στοιχείο της πρώτης λίστας με κάθε στοιχείο της δεύτερης λίστας, εφόσον έχουν το ίδιο extension, π.χ.:
     

    >for dir1_file in ${dir1_files[@]};do
             for dir2_file in ${dir2_files[@]};do
                       if [ ${dir1_file##*.} == ${dir2_file##*.} ]; then
                                 μπλαμπλαμπλα
                       fi
             done
    done


    (παράδειγμα σε bash shell, σε άλλα shells θα είναι λίγο διαφορετικά)
     
     

  • Αν ο σκοπός σου είναι να διαπιστώσεις αν πρόκειται για το ίδιο αρχείο, δε χρειάζεται να χρησιμοποιήσεις την diff, η md5sum ή η shasum αρκεί. Βέβαια αν ο σκοπός σου είναι αυτός, πιθανότατα δεν υπάρχει λόγος να χρησιμοποιείς καν bash loops και md5sum/shasum, καθώς υπάρχουν έτοιμα προγραμματάκια όπως το fdupes που κάνουν τη δουλειά πιο αποδοτικά.
     
     
  • Αν σκοπός σου είναι να παράγεις diff patches, η diff χρησιμοποιείται μόνο σε text files -για binary files όπως τα .doc και τα .exe υπάρχει η bsdiff.

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

αγαπητε nske θεωρω οτι εισουν αρκετα κατατοπιστικος και αναλυτικος. θα προσπαθησω να εφαρμοσω καποια απο αυτα και τα ξαναλεμε. ευχαριστω

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

οταν δινεις δυο φακέλους στη diff συγκρινει ενα προς ενα το ενα αρχειο με τα αρχεια του αλλου. αν μεσα στο φακελο εχεις exe και αλλα binary προσπαθει να τα συγκρινει και αυτα. εγω θελω να κανει ελεγχο ας πουμε αν ο ΦΑΚΕΛΟΣ_Α εχει *.doc και *1.pdf και ΦΑΚΕΛΟΣ_Β με *.exe και *2.pdf , να εκτελειται η diff μονο οταν το *1.pdf του ΦΑΚΕΛΟΣ_Α συναντησει το *2.pdf του ΦΑΚΕΛΟΥ_Β.

 

Μα η diff τα υποστηρίζει εγγενώς όλα αυτά που λες...

 

Π.χ.

>
diff test1/ test2/*.xml

 

Συγκρίνει τα .xml αρχεία από το φάκελο test2 με τα ομώνυμα αρχεία του φακέλου test1.

Προφανώς αν θες βάζεις και *.pdf και όσα άλλα αρχεία θες ταυτόχρονα...

Αν θες να *εξαιρέσεις* αρχεία αντί να συμπεριλάβεις, μπορείς να χρησιμοποιήσεις την GLOBIGNORE.

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

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

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

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