Kann ich mit "find. -Name" .sv "| xargs grep -n" einen Befehl zum Finden von "" machen?

447
al01

Ich versuche einen Alias ​​oder so etwas wie Befehl mit grep und find in Linux zu machen.

irgendwie "find . -name ".sv" | xargs grep -n "word for finding" "

Kann ich einen Befehl oder ein Aliasing mit machen find xargs grep?

Ich möchte also mit diesen 3 Befehlen so arbeiten.

Wenn ich so tippe:

%fxgrep love 

Dann finden Sie das loveWort im Unterverzeichnis in den * .sv-Dateien.

0
Nützlicher Link, damit Sie einige Schlüsselwörter kennen, um Ihre eigenen Nachforschungen voranzutreiben: [In Bash, wann Alias, wann Skript und wann eine Funktion geschrieben wird?] (Https://unix.stackexchange.com/q/30925/ 108618) Kamil Maciorowski vor 6 Jahren 0
Die Verwendung von `xargs` wird kompliziert, wenn Sie Dateien mit Leerzeichen im Namen unterstützen möchten. Ihr Befehl kann auch folgendermaßen geschrieben werden:` find. -name ".sv" -exec grep -n "Wort zum Finden von" {} \; `(aber aufgrund seiner Form sollte es eine Funktion und kein Alias ​​sein). xenoid vor 6 Jahren 0
@xenoid Würdest du bitte ein Beispiel, wie wir einen Util machen können? al01 vor 6 Jahren 0

2 Antworten auf die Frage

1
Hefewe1zen

Der Befehl 'Alias' ist das, wonach Sie suchen

alias aliasname='commands' 
Aber in Ihrem Fall können wir nicht das Argument festlegen, was wir versuchen, es zu betrachten. Jedes Mal ändert sich das Argument, nach dem wir nach einem Wort suchen. Wie wenden wir diesen Weg an? al01 vor 6 Jahren 0
Es ist möglich, Argumente an einen Alias-Befehl zu übergeben, z. B. https://stackoverflow.com/questions/941338/how-to-pass-command-line-arguments-to-a-shell-alias Hefewe1zen vor 6 Jahren 0
1
xenoid

Die Verwendung von xargs wird kompliziert, wenn Sie Dateien mit Leerzeichen im Namen unterstützen möchten. Ihr Befehl kann auch geschrieben werden: Wenn Sie find . -name ".sv" -exec grep -n "word for finding" {} \;jedoch die Form angeben, sollte dies eine Funktion sein:

function fxgrep { find . -name ".sv" -exec grep -n "$1" {} \; ; } 

Rufen Sie mit Anführungszeichen auf, wenn Leerzeichen vorhanden sind:

fxgrep "several words" 
Großartig! Aber kann ich es bei cshell verwenden? Wie implementiere ich es in cshell? al01 vor 6 Jahren 0
Sie können keine Funktionen in (t) csh definieren. Aber warum benutzt du diese Antike? xenoid vor 6 Jahren 0