find + grep για απαιτητικούς...τεμπέληδες

Giorgos Keramidas keramida at ceid.upatras.gr
Wed Dec 6 00:34:52 EET 2006


On 2006-12-06 00:17, V13 <v13 at priest.com> wrote:
>On Tuesday 05 December 2006 22:15, Giorgos Keramidas wrote:
>> 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 ... | \
>
> find . -mtime -7d
>
> :P #1

Ok.

>>     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
>
> Edo nomizo pos egrapses kati diaforetiko apo ayto poy skeytosoyn...
> Anyway, san syntaksi proteino to parakato giati exei kalyteres
> epidoseis:
>
> if head -50 "${file}" | grep -q "XXX" &&
>         grep -q "free" "${file}" ; then
>         echo "${file}"
> fi
>
> :P #2

Δεν ξέρω για επιδόσεις, αλλά είναι σίγουρα πιο σωστό :)




More information about the Linux-greek-users mailing list