Gibt es da draußen eine Alternative für find
ähnlich zu ag
und ack
?
Ich bin es wirklich leid, immer Folgendes eintippen zu müssen:
find some/app -iname "some_file*"
Ich tippe lieber einfach:
find "some_file*"
Und lassen Sie es im aktuellen Ordner und rekursiv in allen Unterordnern suchen.
Antwort1
Dafür gibt es Funktionen oder Skripte. zB
myfind() {
search="$1"
shift
find . -iname "$search" "$@"
}
Am "$@"
Ende können Sie bei Bedarf noch weitere Suchoptionen angeben. Beachten Sie jedoch, dass find
die Reihenfolge einiger Optionen sehr pingelig ist. Einige Optionen funktionieren nur, wenn sie vor dem Pfad stehen ( .
in diesem Fall).
Manche haben Grund find
zum Jammern, weil sie ein Argument verfolgen, das keine Option ist.
zB find . -iname "*.txt" -maxdepth 1
verursacht folgendes Gejammer:
find: Warnung: Sie haben die Option -maxdepth nach einem Nicht-Optionsargument -iname angegeben, aber Optionen sind nicht positionell (-maxdepth wirkt sich auf Tests aus, die davor und danach angegeben wurden). Bitte geben Sie Optionen vor anderen Argumenten an.
Soweit ich weiß, gibt es keine Möglichkeit, diese Warnungen abzuschalten … und wenn doch, heißt sie nicht --quiet
oder --silent
.
Speichern Sie die obige Funktion in jedem Fall in einer Textdatei, z. B. myfind.txt
. Geben Sie dann die Quelle an mit:
. myfind.txt
.
Wenn Sie möchten, dass es bei jeder Anmeldung definiert wird, fügen Sie die Funktionsdefinition zu Ihrem ~/.profile
oder ~/.bash_profile
oder der Quelle myfind.txt
daraus hinzu.
sh
Dies setzt voraus, dass Sie eine Bourne-Shell wie oder verwenden bash
. Beachten Sie, dass einige Versionen von sh
möglicherweise das Schlüsselwort function
davor erfordern myfind
- z. B. . Wenn Sie oder function myfind() { ... }
verwenden , dann... nun... tun Sie es nicht, wechseln Sie zu einer Bourne-Shell.csh
tcsh