Suchen Sie nach ausführbaren Dateinamen ohne Pfad

9

Ich habe einen Ordner mit vielen ausführbaren Dateien und möchte den Pfad in den Ergebnissen des Befehls find weglassen. Dieser Befehl zeigt die Dateien an, die ich sehen möchte, listet aber auch den Pfad auf. Ich möchte nur den Dateinamen.

find /opt/g09 -maxdepth 1 -executable

Wie kann ich die Ausgabe von find so einstellen, dass nur die Dateinamen und nicht der vollständige Pfad angezeigt werden?

j0h
quelle

Antworten:

10

Oder verwenden Sie:

find /opt/g09 -maxdepth 1 -executable -printf "%f\n"

Das Hinzufügen der -type fFlagge funktioniert auch hier.

Aus dem findHandbuch:

 %f     File's name with any leading directories removed (only the last element).

Diese Antwort erfordert nur, dass Sie über GNU verfügen, findwährend andere andere Programme benötigen, um Ihre Ergebnisse zu manipulieren.

nixpower
quelle
-Typ f Daran habe ich gedacht! Vielen Dank, dass Sie Mann codieren!
j0h
@ j0h kein Problem!
Nixpower
6

Verwendung basename:

find /opt/g09 -maxdepth 1 -executable -exec basename {} \;

Von man basename:

Print NAME with any leading directory components removed.

Auch versuchen Sie findalles, um Ihre Suche auf nur Dateien zu beschränken, verwenden Sie:

find /opt/g09 -type f -maxdepth 1 -executable -exec basename {} \;
heemayl
quelle
3

Die naheliegendste Lösung für mich ist

(cd /opt/g09; find -maxdepth 1 -executable)

Da Sie eine Subshell starten, bleiben Sie im selben Verzeichnis. Vorteil dieser Methode ist, dass Sie keine Analyse benötigen. Nachteil ist, dass Sie eine Subshell starten (das werden Sie aber nicht spüren).

Bernhard
quelle
1
Es ist eine kluge Idee.
AB
1

Mit awkdem Pfad durch den Begrenzer Aufspalten /, drucken Sie den letzten Abschnitt ( $NF):

find /opt/g09 -maxdepth 1 -executable | awk -F/ '{print $NF}'
Jacob Vlijm
quelle
Wo ist deine Python-Version, Bruder? ;)
Sergiy Kolodyazhnyy
@ Serg haha, ich musste meine Finger binden :)
Jacob Vlijm
1

Mit einer Kombination aus findundperl

find /opt/g09 -maxdepth 1 -type f -executable | perl -pe 's/.+\/(.*)$/\1/'
AB
quelle
Tolle Möglichkeit, etwas Perl zu lernen: P
nixpower