Listando tudo mais que * {. tex, .aux} por ls

4

Como você pode ls todo o resto dos arquivos *{.tex, .aux} ?

Eu corro sem sucesso

ls -I".tex"
    
por Léo Léopold Hertz 준영 30.08.2009 / 21:09

5 respostas

1

Graças à resposta do @sth , finalmente encontrei um comando ls que funciona com um prefixo glob de seleção padrão (lá a opção de esconder não funciona); considere:

touch MyDocument{.aux,.auxlock,.bbl,.bcf,.blg,.log,.out,.pgf-plot.gnuplot,.run.xml,.tex,.toc}
touch YourDocument{.aux,.auxlock,.bbl,.bcf,.blg,.log,.out,.pgf-plot.gnuplot,.run.xml,.tex,.toc}

ls                                # list all
# MyDocument.aux               YourDocument.aux
# MyDocument.auxlock           YourDocument.auxlock
# MyDocument.bbl               YourDocument.bbl
# MyDocument.bcf               YourDocument.bcf
# MyDocument.blg               YourDocument.blg
# MyDocument.log               YourDocument.log
# MyDocument.out               YourDocument.out
# MyDocument.pgf-plot.gnuplot  YourDocument.pgf-plot.gnuplot
# MyDocument.run.xml           YourDocument.run.xml
# MyDocument.tex               YourDocument.tex
# MyDocument.toc               YourDocument.toc

ls MyDocument.*                   # prefix search glob only, works fine
# MyDocument.aux      MyDocument.bcf  MyDocument.out               MyDocument.tex
# MyDocument.auxlock  MyDocument.blg  MyDocument.pgf-plot.gnuplot  MyDocument.toc
# MyDocument.bbl      MyDocument.log  MyDocument.run.xml

ls --hide='*.tex'                 # works if no search glob is used
# MyDocument.aux      MyDocument.pgf-plot.gnuplot  YourDocument.blg
# MyDocument.auxlock  MyDocument.run.xml           YourDocument.log
# MyDocument.bbl      MyDocument.toc               YourDocument.out
# MyDocument.bcf      YourDocument.aux             YourDocument.pgf-plot.gnuplot
# MyDocument.blg      YourDocument.auxlock         YourDocument.run.xml
# MyDocument.log      YourDocument.bbl             YourDocument.toc
# MyDocument.out      YourDocument.bcf

ls --hide='*.tex' MyDocument.*    # does NOT work with prefix glob!
# MyDocument.aux      MyDocument.bcf  MyDocument.out               MyDocument.tex
# MyDocument.auxlock  MyDocument.blg  MyDocument.pgf-plot.gnuplot  MyDocument.toc
# MyDocument.bbl      MyDocument.log  MyDocument.run.xml

ls MyDocument!(.tex|.aux)         # works with (FULL!) prefix
# MyDocument.auxlock  MyDocument.blg  MyDocument.pgf-plot.gnuplot
# MyDocument.bbl      MyDocument.log  MyDocument.run.xml
# MyDocument.bcf      MyDocument.out  MyDocument.toc

ls MyDocu*!(.tex|.aux)            # does NOT work w/ partial prefix 
                                  # if * pattern does not terminate (is last before !)
# MyDocument.aux      MyDocument.bcf  MyDocument.out               MyDocument.tex
# MyDocument.auxlock  MyDocument.blg  MyDocument.pgf-plot.gnuplot  MyDocument.toc
# MyDocument.bbl      MyDocument.log  MyDocument.run.xml

ls MyDocu*.!(tex|aux)             # does work w/ partial prefix, if * pattern terminates
                                  # (here termination is with dot . coming before ! )
# MyDocument.auxlock  MyDocument.blg  MyDocument.pgf-plot.gnuplot
# MyDocument.bbl      MyDocument.log  MyDocument.run.xml
# MyDocument.bcf      MyDocument.out  MyDocument.toc

Assim, a resposta para este caso é usar ls PREFIX*.!(ext1|ext2) , ou em outras palavras: "listar arquivos começando com 'PREFIX' e qualquer caractere até um ponto '.', que não é seguido por ext1 ou ext2".

    
por 11.10.2014 / 17:01
10
ls -I*.tex -I*.aux

ou

ls --hide=*.tex --hide=*.aux
    
por 30.08.2009 / 21:17
9

Se você usar o bash e tiver o conjunto de opções extglob shell (que geralmente é o caso):

ls !(*.tex|*.aux)
    
por 30.08.2009 / 21:48
0

Se você estiver usando zsh com o conjunto de opções EXTENDED_GLOB:

pattern~negpattern

onde 'padrão' é o que você deseja corresponder, exceto qualquer coisa que corresponda a 'negpattern'.

Exemplo:

ls -d *~*.mp3

listará todos os arquivos em seu cwd, exceto aqueles que terminem em '.mp3'.

Se você não estiver usando o zsh, experimente, esse tipo de expansão inteligente está em todo lugar.

    
por 02.08.2010 / 22:16
0

você pode usar:

ls | grep -v *.tex | grep -v *.aux
    
por 30.08.2009 / 21:17

Tags