Der Befehl tail muss die gesamte Datei lesen, um die letzten zehn Zeilen zu berechnen. Es ermittelt Zeilen durch Suche nach Zeilenumbrüchen. Also liest man die Datei nach festen Zeichenketten.
Ihr grep liest dagegen die gesamte Datei und sucht nach einer festen Zeichenfolge. Klingt nach ziemlich ähnlichem. Zugegeben, der grep ist ein bisschen komplexer, aber ich wette, der Aufwand, einen neuen Prozess zu formen und die Pipes einzurichten, ist mehr als der grep-Aufwand. Sie können den Grep-Befehl jedoch etwas beschleunigen, indem Sie ihm mitteilen, dass Ihr Muster eine feste Zeichenfolge ist und nicht ein regulärer Ausdruck. Geben Sie dazu die Option "-F" für grep an (oder verwenden Sie fgrep). Wenn Sie GNU grep haben, können Sie wahrscheinlich auch --mmap verwenden, um die Dinge zu beschleunigen.
Probieren Sie grep -rnl * --mmap -F -e "Ai9LbaFz7lC13SwzDxAYT72vwA"
es aus und sehen Sie, ob es vielleicht genauso schnell oder schneller ist als Ihre Lösung mit Tail. :)
Die Genauigkeit des nur grep-only-Scans ist jedoch eine andere Frage, da dies immer noch nicht bestätigt, dass die Übereinstimmung in den letzten 10 Zeilen der Datei liegt. Ich hoffe jedoch, diesen Teil zu beschönigen, indem ich die Verwendung eines Nachverarbeitungsbefehls zum Zählen der Zeilen in übereinstimmenden Dateien oder so vorschlage. ;)