Spotlight benutzen, um grep-Suche zu beschleunigen

Sonntag, 28 März 2010
0.0/5 Bewertung (0 Stimmen)
Beschreibung

Das grep -ri-Kommando (rekursive Suche nach Übereinstimmungen) ist im Terminal sehr nützlich, allerdings auch sehr langsam. Unter Mac OS X können wir mdfind (Terminal-Version von Spotlight) dafür hernehmen, eine Liste der Dateien anzuzeigen, die in denen unserer Suchbegriff vorkommt. Anschließend benutzen wir dann grep, um in der Liste genauer nach der Zeichenkette zu suchen.
Hier ist das Script dazu, um genau das zu erledigen:


#!/bin/bash
#
# Spotlight metadata find and grep by Daniel.Hoherd at gmail dot com
## Check for at least two arguments, print usage if else
if [ $# -lt 1 ] ; then
echo ”usage: $0 searchstring [dir or file] [dir2 or file2]”
exit ;
fi
ss=$1;
shift;
files=$@;
until [ -z ”$1” ] ; do
thisitem=$1
onlyin=”-onlyin ”$thisitem” $onlyin”
shift
done;
eval mdfind -0 $onlyin ”$ss” | xargs -0 grep -Hi ”$ss”

mdfind zu benutzen, um die Dateien auszusortieren, die nicht die passende Zeichenkette beinhalten, macht diesen Vorgang so schnell. da werden aus mehreren Minuten schon mal einige Sekunden, bei knapp 100 GB Dateien. Der Nachteil allerdings ist, dass Spotlight nicht jedes Verzeichnis indiziert. Somit können einige Systemdateien fehlen.
Wenn Sie das Script nicht benutzen möchten, können Sie das gleiche mit folgendem Befehl erreichen:

mdfind -0 -onlyin searchdir searchstring | xargs -0 grep -Hi searchstring

Die -H und -i-Optionen dienen nur dazu, um engere Übereinstimmungen in der Ausgabe von mdfind zu erreichen, Sie können Sie aber auch weg lassen
[zo: Erweitert man die Option -Hi zu -Hio --color, wird dazu noch die Zeilennummer angezeigt und der Suchbegriff farbig hervorgehoben.]

Spezifikationen

Hits

2407

© by macjaner.ch | Powered by GoeGG-ArT.ch