Localiza nomes de arquivos executáveis sem caminho

9

Eu tenho uma pasta com muitos executáveis e desejo omitir o caminho nos resultados do comando find. este comando mostra os arquivos que eu quero ver, mas também lista o caminho; Eu só quero o nome do arquivo.

find /opt/g09 -maxdepth 1 -executable

como posso obter a saída do find para mostrar apenas os nomes dos arquivos, e não o caminho completo?

    
por j0h 01.07.2015 / 18:00

5 respostas

10

Ou use:

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

adicionar o sinal -type f também funciona aqui.

Do manual find :

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

Essa resposta requer apenas que você tenha o GNU find , enquanto outros exigem que outros programas manipulem seus resultados.

    
por nixpower 01.07.2015 / 18:08
6

Use basename :

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

De man basename :

Print NAME with any leading directory components removed.

Além disso, você está tentando find all, para restringir sua pesquisa apenas a arquivos, use:

find /opt/g09 -type f -maxdepth 1 -executable -exec basename {} \;
    
por heemayl 01.07.2015 / 18:06
3

A solução mais óbvia para mim é

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

Porque você inicia um subshell, você permanece no mesmo diretório. A vantagem deste método é que você não precisa de análise. A desvantagem é que você começa um subshell (você não vai sentir isso).

    
por Bernhard 01.07.2015 / 21:06
1

Com awk , dividindo o caminho pelo delimitador / , imprima a última seção ( $NF ):

find /opt/g09 -maxdepth 1 -executable | awk -F/ '{print $NF}'
    
por Jacob Vlijm 01.07.2015 / 18:10
1

Usando uma combinação de find e perl

find /opt/g09 -maxdepth 1 -type f -executable | perl -pe 's/.+\/(.*)$//'
    
por A.B. 01.07.2015 / 18:33

Tags