![](https://seccdn.libravatar.org/avatar/2a347b18c06ada0bdb2501b5a3e9a8cf.jpg?s=120&d=mm&r=g)
Moin,
* David Haller
Hallo,
On Sat, 16 Nov 2002, Thorsten Haude wrote:
Probier mal aus, wie das auf Deinem System aussieht: find / -type f -exec file {} \; 2>/dev/null | grep 'shell script text' | grep -Ev '(~|bck):' | awk -F: '{print $1}' | awk -F/ '{print $2}' | grep '\.' | grep -v '\.sh'
(Was für ein Ungetüm. David könnte das bestimmt mit 30 Zeichen.)
Ma kuckn ;)
Also, auf jeden Fall kann man den ganze Kram ab dem ersten 'grep' zusammenfassen... Wenn man schon ein awk anwirft... ;)
Jaaa, mit dem Ding konnte ich aber noch nie umgehen.
Erstmal: Was soll das 'bck' sein? [1]
Das sind NEdit's Backupdateien.
1: | grep 'shell script text' ### nur zeilen in denen 'shell script text' vorkommt 2: | grep -Ev '(~|bck):' ### wo der Dateiname aber weder '~' noch 'bck' am Ende enthaelt 3: | awk -F: '{print $1}' ### den Dateinamen dieser Dateien 4: | awk -F/ '{print $2}' ### hae? Was soll das bringen? Damit bekommst du ne Liste wie: ### /, /home /usr etc.... Das ist also Schwachfug... Wolltest du ### sowas wie 'basename'?
Genau, basename(1). Meine Lösung ist quasi hysterisch gewachsen.
5: | grep '\.' ### je nun, jetzt filtert er aus den Verzeichnissen direkt unter / ### noch welche aus, die einen '.' enthalten... (vermutlich waren ### Dateinamen(!) gemeint, die einen '.' enthalten
Genau, Dateinamen mit Punkt. Klappt auch so.
6: | grep -v '\.sh' ### ah, und davon dann die, die _nicht auf '.sh' enden...
...aber eine Endung haben!
Ok, mal angenommen, ich habe die Intention des obigen Gewuerges richtig verstanden, dann wuerde ich sowas verwenden:
==== awk -F':' ' !/~|bak|bck/ && /:.*shell script text/ && /.*\/[^/]*\.[^/]*/ && !/\.sh/ { print $1; }' ====
*muahahaha*
Sind 29 Zeichen!!!
David, Du bist mein Held!
Wichtiger als die Zeichenzahl ist aber: Ich verwende nur ein(!) awk anstelle von 4 'grep's und 2 'awk's...
Schon klar. Ich würde sowas auch nicht auf Platte speichern, dazu gibt's Perl.
Auch das mit dem find laesst sich verbessern:
Finde ich nicht besser. Gerade Shellskripte liegen nicht unbedingt im Pfad, sondern wo sie eben gerade passen. Thorsten -- Anyone who is capable of getting themselves made President should on no account be allowed to do the job. - The Book