Trouver les noms de fichiers exécutables sans chemin

9

J'ai un dossier avec de nombreux exécutables et je veux omettre le chemin dans les résultats de la commande find. cette commande affiche les fichiers que je veux voir, mais elle répertorie également le chemin; Je veux juste le nom du fichier.

find /opt/g09 -maxdepth 1 -executable

comment puis-je obtenir la sortie de find pour afficher uniquement les noms de fichiers, et non le chemin complet?

j0h
la source

Réponses:

10

Ou utiliser:

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

l'ajout du -type fdrapeau fonctionne également ici.

Du findmanuel:

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

Cette réponse nécessite uniquement que vous ayez GNU findtandis que d'autres nécessitent d'autres programmes pour manipuler vos résultats.

nixpower
la source
-type f C'est à quoi j'essayais de penser! Merci de coder l'homme!
j0h
@ j0h pas de problème!
nixpower
6

Utilisation basename:

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

De man basename:

Print NAME with any leading directory components removed.

Vous essayez également de findtout, pour limiter votre recherche aux seuls fichiers, utilisez:

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

La solution la plus évidente pour moi est

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

Parce que vous démarrez un sous-shell, vous restez dans le même répertoire. L'avantage de cette méthode est que vous n'avez pas besoin d'analyser. L'inconvénient est que vous démarrez un sous-shell (vous n'allez pas le ressentir cependant).

Bernhard
la source
1
C'est une idée intelligente.
AB
1

Avec awk, en divisant le chemin par le délimiteur /, imprimez la dernière section ( $NF):

find /opt/g09 -maxdepth 1 -executable | awk -F/ '{print $NF}'
Jacob Vlijm
la source
Où est ta version python, frère? ;)
Sergiy Kolodyazhnyy
@Serg haha, je devais attacher mes doigts :)
Jacob Vlijm
1

En utilisant une combinaison de findetperl

find /opt/g09 -maxdepth 1 -type f -executable | perl -pe 's/.+\/(.*)$/\1/'
UN B
la source
Excellente façon d'apprendre du Perl: P
nixpower