Antworten:
Mit GNU find können Sie -printf
anstelle von -print
anpassen, wie ein Dateiname gedruckt wird. (Sie können dies auch mit der Standardsuche tun, jedoch auf Umwegen -exec sh -c 'echo ...' {}
.) Mit dem folgenden Befehl werden beispielsweise ausführbare Dateien in Grün und andere reguläre Dateien in der Standardfarbe gedruckt:
find . -type f \( -perm +100 -printf '\033[32m%p\033[0m\n' -or -print \)
-or -print
.
Was ich normalerweise mache, um das Scrollen von Befehlszeilentexten hervorzuheben, ist die Verwendung dieser Bash + Perl-Funktion:
highlight() { perl -pe "s/$1/\e[1;31;43m$&\e[0m/g"; }
so wie:
command | highlight "desired text"
find ... | grep -E --color 'words of interest|more good stuff|$'
Das Dollarzeichen stimmt mit dem Ende jeder Zeile überein, hat jedoch nichts hervorzuheben, sodass auch Zeilen ohne Übereinstimmungen ausgegeben werden, während andere von Ihnen aufgelistete Elemente hervorgehoben werden.
auto
), handelt es sich um eine sehr kurze Pipe zum Hervorheben, die praktisch überall verfügbar ist : grep -E 'word|$'
. Dies sollte mehr Aufmerksamkeit bekommen!
export GREP_OPTIONS='--color=auto'
wenn Sie EINMAL tippen (z. B. in Feldern anderer Personen, in denen standardmäßig keine Grep-Farben aktiviert sind), grep -E 'i|$'
ist dies immer noch kürzer als bei den meisten anderen Lösungen.
Dies ähnelt der Antwort von @jrods, erfordert jedoch kein Perl. Dies funktioniert mit GNU grep, das unter Darwin, Linux & FreeBSD installiert ist.
Sie können grep
mit Farben verwenden und Ihren Befehl durch grep leiten:
export GREP_OPTIONS="--color=auto"
Um den Text hervorzuheben, gehen Sie einfach wie folgt vor:
find / -name "perl" |grep "your_string_here"
Ich habe eine, die ich zum Beispiel verwende, um als (Alias-) Ersatz für ls -d */ .*/
die Verzeichnisse .
und zu arbeiten ..
:
finden . -mindepth 1 -maxdepth 1 -type d -exec ls --color = auto -d {} \;
Auf diese Weise erhalte ich nicht nur Hervorhebungen, sondern auch die gleiche Systemhervorhebung, die normalerweise angewendet wird.
Ich verwende die folgende Funktion (definiert in ~ /. {Ba, z} shrc):
HLCOLOR="\x1b[30;47m"
NOCOLOR="\x1b[0m"
#Usage: find [dir] [mask1] [mask2]...
#where maskN will become <<-iname '*maskN*'>> param for 'find'
#'dir' should be an existing directory. otherwise it will be recognized as mask.
function findm {
local it cl sp;
[ -d "$1" ] && cl="'$1'" && shift;
for it in "$@"; do
cl="${cl} -iname '*${it}*' -or";
sp="${sp}${it}\\|";
done;
cl="${cl%-or}";
sp="s/\\(${sp%\\|}\\)/${HLCOLOR}\\0${NOCOLOR}/ig";
eval find ${cl} | sed -e "${sp}";
}
Wenn die Farben in grep aktiviert oder automatisch aktiviert sind, können Sie einfach eine kurze grep-Pipe mit der Option für den erweiterten regulären Ausdruck und dem Dollarzeichen erstellen (um weiterhin jede Zeile anzuzeigen).
grep -E 'word|$'
Zum Beispiel mit einer Suchsuche:
find . -type f | grep -E 'readme|$'
Dadurch wird jedes Vorkommen von "Readme" hervorgehoben und die gesamte Ausgabe von find angezeigt.
Nebenbemerkung: Wenn grep die Farben deaktiviert hat, können Sie entweder die Option --color hinzufügen ( grep -E --color ...
), wie Dennis Williamson vorschlägt, oder sie für die Sitzung festlegen ( export GREP_OPTIONS="--color=auto"
).