Ist es möglich, mit dem Befehl find eine farbige Ausgabe zu erhalten ? Das heißt, im Pfad jedes gefundenen Elements sind Verzeichnisse blau, ausführbare Skripte grün und so weiter? Ich verwende Version 4.4.2 von GNU Findutils .
Bearbeiten - Zur Verdeutlichung wird jedes Ergebnis folgendermaßen hervorgehoben:
./path/to/file.sh
^ ^ ^
| | L green
blue
(wenn zum Beispiel ausgeführt wird find . -type f
).
bfs
, der diese Funktionalität hat: github.com/tavianator/bfsAntworten:
UPDATE: Ich habe ein neues (anderes) Skript hinzugefügt ...
Ignacio Vazquez-Abrams
hatte einen Punkt: Die Frage fragt wirklich nachexecutable scripts are green, et cetera
... okay ... ein solches (Prototyp-) Skript finden Sie am Ende dieser Antwort.Dieser erste (originale) Abschnitt handelt von
grc
undgrcat
.Das sollte funktionieren;
grc
... (wie Enzotib herausgestellt hat. Der Paketname istgrc
... Das im Beispiel verwendete Unterprogramm istgrcat
Das folgende Beispiel wird gedruckt
./
in Magentabin/cpp/
in cyanbigint
in fettweißIch habe noch nicht vollständig geklärt, wie es mit der Konfigurationsdatei umgeht, aber so sieht es aus, als würde es das tun, was Sie wollen (sobald Sie es gezähmt haben). für eine Datei ohne Unterverzeichnis, und die Farbsequenz scheint nicht in der gleichen Reihenfolge wie die Ausdrücke zu sein.
Ich nehme an, es ist möglich (aber ich bin im Moment ein bisschen beschäftigt) ...
Hier ist das neue, von Ignacio inspirierte Drehbuch :)
Dies funktioniert, wenn Sie einen einzelnen Pfad als erstes Argument für verwenden
find
.Es gibt UNGEPRÜFTE Probleme in diesem Skript. Es ist nur ein Konzept.
Ein Problem ist: Symbolische Verknüpfungen ... trübe Gewässer ...
Wie sie sind, gibt sie eine aus,
ERROR
wenn sie auf einen unbekannten Typ stößt (z. B. eine symbolische Verknüpfung), und setzt die Verarbeitung danach fort.Vielen Dank
enzotib
für dietput
Beispiele.quelle
grcat
Dienstprogramm aus demgrc
Paket beziehen :) Am Anfang hatte ich einige Schwierigkeiten zu verstehen, was Sie sagen.Sie könnten
-exec
das meiste davon erledigen (meine Lösung färbt den Verzeichnis-Teil nicht anders). Wenn Sie-print
in Ihremfind
Befehl haben, ersetzen Sie ihn durch-exec ls --color -d
; Wenn Sie das implizite Drucken verwenden, fügen Sie dies hinzu. Dies setzt voraus, dass Siels
die--color
Option unterstützen .quelle
Dies gilt nur die zweifarbige Highlight für Pfad und Dateinamen, nicht die pro-Datei des Typs Sache von
ls
:Konfigurieren Sie die Farben der
grep
Ausgabe auf die richtige Weise für übereinstimmende und nicht übereinstimmende Teile und passen Sie den Dateinamen an:Möglicherweise möchten Sie die Variable nicht überschreiben. Legen Sie
GREP_COLORS
sie daher nur für Folgendes festgrep
:(Definitionen der veralteten Variablen
GREP_COLOR
haben eine geringere Priorität als diejenigen inGREP_COLORS
)Für die Farbcodes finden Sie
colortest-16
aus dem Paketcolortest
,und Abschnitt „Set Graphics Rendition“ in ANSI - Terminal - Befehlssequenzen .
quelle
Mir hat die -exec Idee gefallen. Ich habe es benutzt, um diese Funktion zu erstellen:
quelle