Findet alle Dateien, deren Namen eine bestimmte Klausel enthalten

Findet alle Dateien, deren Namen eine bestimmte Klausel enthalten

Dies ist eine allgemeine Frage, aber in meinem Fall habe ich den gcc arm-Compiler installiert (ich glaube, er wurde installiert!), aber ich kann ihn nirgendwo in meinem System finden. Ich habe den folgenden Befehl ausprobiert, aber er gibt fast alles zurück

$sudo find . -print | grep -i '.*[arm]'

Ich glaube, die Datei, nach der ich suche, könnte die folgenden Klauseln im Namen haben:

gcc, arm, eabi, 4.8, ....

Was wäre der beste Suchbegriff?

Antwort1

Sie können die Schalter -nameoder anstelle der Ausgabe von ping verwenden . Sie können die Suche auch auf Dateien eingrenzen. Wenn Sie keine Ahnung haben, wo es installiert worden sein könnte, suchen Sie besser in und nicht in Ihrem aktuellen Arbeitsverzeichnis:-inamefindgrepfind/

sudo find / -type f -name "*gcc*" -o -name "*arm*" -o -name "*eabi*" -o -name "*4.8*"

GemäßIhr Kommentar, Sie haben es unter Verwendung eines PPA installiert, wenn also die ausführbare Datei zu Ihrem Pfad hinzugefügt wurde, sollten Sie in der Lage sein, ihren Speicherort durch Ausführen zu ermitteln which arm-none-eabi-gcc; wenn nicht, führen Sie aus sudo find / -type f -name "*arm-none-eabi-gcc*", es sollte sie finden können.

Antwort2

Ich habe das Paket installiert und ausgeführt: dpkg-query -L gcc-arm-none-eabi. Das Ergebnis war eine Liste von Dateien, von denen die relevantesten eine Anzahl von Dateien waren, die /usr/bin/insgesamt mit beginnen arm-none-eabi. Ich denke, das sind die Dateien, nach denen Sie suchen.

    $ls /usr/bin/arm-none-eabi*
/usr/bin/arm-none-eabi-addr2line   /usr/bin/arm-none-eabi-gcov
/usr/bin/arm-none-eabi-ar          /usr/bin/arm-none-eabi-gdb
/usr/bin/arm-none-eabi-as          /usr/bin/arm-none-eabi-gprof
/usr/bin/arm-none-eabi-c++         /usr/bin/arm-none-eabi-ld
/usr/bin/arm-none-eabi-c++filt     /usr/bin/arm-none-eabi-ld.bfd
/usr/bin/arm-none-eabi-cpp         /usr/bin/arm-none-eabi-nm
/usr/bin/arm-none-eabi-elfedit     /usr/bin/arm-none-eabi-objcopy
/usr/bin/arm-none-eabi-g++         /usr/bin/arm-none-eabi-objdump
/usr/bin/arm-none-eabi-gcc         /usr/bin/arm-none-eabi-ranlib
/usr/bin/arm-none-eabi-gcc-4.9.3   /usr/bin/arm-none-eabi-readelf
/usr/bin/arm-none-eabi-gcc-ar      /usr/bin/arm-none-eabi-size
/usr/bin/arm-none-eabi-gcc-nm      /usr/bin/arm-none-eabi-strings
/usr/bin/arm-none-eabi-gcc-ranlib  /usr/bin/arm-none-eabi-strip

Antwort3

Dieser findBefehl sollte funktionieren:

find . -executable -type f -regex '.*\/[^\/]*\(gcc\|arm\|eabi\|4\.8\)[^\/]*'

Erläuterung:

  • -executable: trifft nur auf Dateien zu, bei denen das Ausführbare-Bit gesetzt ist.
  • -type f: nur mit regulären Dateien übereinstimmen.
  • -regex ...: Suche nach dem regulären Ausdruck. Sie möchten nur Basisnamen, keine ganzen Teile, also müssen wir Schrägstriche ( /) hinter mindestens einem Schrägstrich ausschließen.

verwandte Informationen