Encontre nomes de arquivos executáveis ​​sem caminho


9

Eu tenho uma pasta com muitos executáveis ​​e quero 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?

Respostas:


10

Ou use:

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

adicionar a -type fbandeira também funciona aqui.

Do findmanual:

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

Esta resposta requer apenas que você tenha o GNU, findenquanto outros exigem outros programas para manipular seus resultados.


-tipo f É o que eu estava tentando pensar! Obrigado, codificador!
J0h 01/07

@ j0h não é um problema!
Nixpower 01/07/2015

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 de findtudo, para restringir sua pesquisa apenas a arquivos, use:

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

3

A solução mais óbvia para mim é

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

Como você inicia um subshell, permanece no mesmo diretório. A vantagem desse método é que você não precisa analisar. A desvantagem é que você inicia um subshell (apesar de não sentir isso).


11
É uma ideia inteligente.
AB

1

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

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

Onde está sua versão python, mano? ;)
Sergiy Kolodyazhnyy

@Serg haha, eu tive que amarrar meus dedos :)
Jacob Vlijm

1

Usando uma combinação de findeperl

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

Ótima maneira de aprender um pouco de Perl: P
nixpower
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.