Esse é o comportamento padrão de ls
ls /net/nas/data/languages/pypm/sites/rex/free/2.6/*/pool/v/vi/virtual*1.4.4*pypm
/net/nas/data/languages/pypm/sites/rex/free/2.6/linux-x86/pool/v/vi/virtualenv-1.4.4_linux-x86_2.6_1.pypm
/net/nas/data/languages/pypm/sites/rex/free/2.6/linux-x86_64/pool/v/vi/virtualenv-1.4.4_linux-x86_64_2.6_1.pypm
/net/nas/data/languages/pypm/sites/rex/free/2.6/macosx/pool/v/vi/virtualenv-1.4.4_macosx_2.6_1.pypm
/net/nas/data/languages/pypm/sites/rex/free/2.6/win32-x86/pool/v/vi/virtualenv-1.4.4_win32-x86_2.6_1.pypm
Como faço para ls
imprimir apenas o nome da base? Gostar:
ls $OPTIONS /net/nas/data/languages/pypm/sites/rex/free/2.6/*/pool/v/vi/virtual*1.4.4*pypm
virtualenv-1.4.4_linux-x86_2.6_1.pypm
virtualenv-1.4.4_linux-x86_64_2.6_1.pypm
virtualenv-1.4.4_macosx_2.6_1.pypm
virtualenv-1.4.4_win32-x86_2.6_1.pypm
Nota : Prefiro o shell globbing do que usar find
como / net / nas / data / languages / pypm / sites / rex / free contém um grande número de arquivos e diretórios.
linux
command-line
unix
ls
Srid diz Restabelecer Monica
fonte
fonte
-maxdepth 1
parafind
.Respostas:
Embora
xargs -0
se destine a ser usado para entrada delimitada por \ 0 (comofind -print0
),ls
não existe essa opção para delimitar sua saída dessa maneira.Contudo,
faria o truque para converter novas linhas em nulos ao longo do caminho. Isso permite que o xargs trabalhe com nomes que possuem espaços.
EDIT: adicionado
-n 1
ao xargsfonte
basename: extra operand
\ 033 [0m / net / nas / data / languages / pypm / sites / rex / free / 2.6 / macosx / pool / v / vi / virtualenv-1.4.4_macosx_2.6_1.pypm \ 033 [ 0m'`-n 1
que sugeriu em outro lugar como uma opçãoxargs
? (Resposta editada)-d
opção (delimitador), você poderá fazê-lols ... | xargs -d '\n' -n 1 basename
.Eu uso isso:
Ele fornece uma lista como:
fonte
ls -1
(e cor desabilitada), comols
implica aqueles que não estão gravando em um terminal. Parece que você está perdendo um pouco o assunto, pois o problema está eliminando o nome do diretório ao especificarls
argumentos de caminho usando caracteres curinga. Tentels -d "$PWD/"* | tr '\n' '\n'
ver qual é o problema real.ls -1
, mas também não funciona quando os globos são usados, como Daniel Beck apontou.ls -1
, e só funciona no diretório atual, não com um caminho comols path/*
.fonte
awk
solução:fonte
ls [caminho opcional] | xargs -0 basename
fonte
xargs -0
está procurando.O nome de base do GNU e o nome de base do FreeBSD aceitam um
-a
argumento que permite a você passar vários caminhos para o comando. Isso funciona muito bem com globbing shell.fonte
Você disse que prefere dar uma olhada
find
, mas sabia que os dois não são mutuamente exclusivos? Globbing acontece em qualquer comando que você executa, não apenasls
. Por exemplo:Observe que o exemplo find pode usar -print0, o que é útil se seus caminhos contiverem espaços em branco (as
tr
soluções baseadas mencionadas em outros lugares funcionam muito bem em espaços normais, mas não em arquivos que contêm novas linhas reais).Por fim, se você tiver acesso ao GNU find, também poderá usar -printf, o que evita a chamada de nome de base completamente:
fonte
-printf
opção não está disponível na versão MacOSX defind
.vá para o diretório em que você tem todos os seus arquivos e digite.
fonte
find
.find . -name '*pypm'
se em tudo ... apenas colocar o glob seguinte para encontrar a nada - então você poderia apenas escreverls *.pypm
.)