find + grep για απαιτητικούς...τεμπέληδες
Giorgos Keramidas
keramida at ceid.upatras.gr
Tue Dec 5 22:15:00 EET 2006
On 2006-12-05 21:41, Nick Demou <ndemou at gmail.com> wrote:
> μια φορά το μήνα τουλάχιστον θα χρειαστεί να κάνω μια αναζήτηση
> "προχωρημένη" για τις ταπεινές μου γνώσεις bash. Π.χ.:
>
> ψάχνω για αρχεία των τελευταίων 7 ημερών που
> ΚΑΙ έχουν στις πρώτες 50 γραμμές την λέξη "ΧΧΧ"
> ΚΑΙ έχουν οπουδήποτε την λέξη "free"
> (οι λέξεις στην τύχη :-)
>
> εν τέλη με ένα συνδιασμό find -exec, κάποιου πρόχειρου Script και αν
> είμαι άτυχος και κανενός temp αρχείου πάντα κάνω την δουλειά μου αλλά
> το όλο εγχείρημα μου πέρνει αρκετή ώρα (είμαι ξεχασιάρης γέρος και
> ανοίγω την man page του find και του grep και το bash scripting how-to
> κάθε μα κάθε φορά*)
>
> γνωρίζει κανείς κάποια console based* εναλακτική πρόταση ή ΠΡΕΠΕΙ να
> μάθω απ'έξω κι ανακατοτά το shell?
Πρέπει να μάθεις απέξω κι ανακατωτά το shell:
find somepath/ -mtime 7d -or -mtime 6d -or -mtime 5d \
-or -mtime 4d ... | \
while read file ; do
xxxflag=$(head -50 "${file}" | grep -q "XXX")
freeflag=$(grep "free" "${file}")
if test ${xxxflag} -eq 0 && test ${freeflag} -eq 0 ; then
echo "${file}"
fi
done
Η `γλώσσα' του shell έχει γραφτεί για να μπορεί κανείς να συνδυάσει, με
σχετικά εύκολο[1] τρόπο, πολλές εντολές και να βγάλει τερατουργήματα
όπως το παραπάνω σε μισό λεπτό.
[1] Εντάξει, το "εύκολο" ήταν λίγο υπερβολικό :)
More information about the Linux-greek-users
mailing list