Trova i nomi dei file eseguibili senza percorso


9

Ho una cartella con molti eseguibili e desidero omettere il percorso nei risultati del comando find. questo comando mostra i file che voglio vedere, ma elenca anche il percorso; Voglio solo il nome del file.

find /opt/g09 -maxdepth 1 -executable

come posso ottenere l'output di find per mostrare solo i nomi dei file e non il percorso completo?

Risposte:


10

Oppure usa:

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

l'aggiunta della -type fbandiera funziona anche qui.

Dal findmanuale:

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

Questa risposta richiede solo che tu abbia GNU findmentre altri richiedono altri programmi per manipolare i tuoi risultati.


tipo f Questo è quello che stavo cercando di pensare! Grazie amico!
j0h

@ j0h non è un problema!
nixpower,

6

Utilizzare basename:

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

Da man basename:

Print NAME with any leading directory components removed.

Inoltre stai provando a findtutto, per limitare la tua ricerca ai soli file, usa:

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

3

La soluzione più ovvia per me è

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

Poiché si avvia una subshell, si rimane nella stessa directory. Il vantaggio di questo metodo è che non è necessario analizzare. Lo svantaggio è che si avvia una subshell (non lo sentirai comunque).


1
È un'idea intelligente.
AB

1

Con awk, suddividendo il percorso per il delimitatore /, stampa l'ultima sezione ( $NF):

find /opt/g09 -maxdepth 1 -executable | awk -F/ '{print $NF}'

Dov'è la tua versione di Python, fratello? ;)
Sergiy Kolodyazhnyy

@Serg haha, ho dovuto legare le dita :)
Jacob Vlijm,

1

Utilizzando una combinazione di findeperl

find /opt/g09 -maxdepth 1 -type f -executable | perl -pe 's/.+\/(.*)$/\1/'

Ottimo modo per imparare un po 'di Perl: P
nixpower,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.