4

Как вы можете все еще ls файлы *{.tex, .aux}

Я бегаю неудачно

ls -I".tex"

5 ответов5

10
ls -I*.tex -I*.aux

или же

ls --hide=*.tex --hide=*.aux
9

Если вы используете bash и у вас установлена опция оболочки extglob (как обычно):

ls !(*.tex|*.aux)
1

Благодаря ответу @sth , я наконец-то нашел команду ls которая работает с шаблоном выделения префикса (там опция Hide не работает); рассматривать:

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

Таким образом, ответом для этого случая является использование ls PREFIX*.!(ext1|ext2) , или другими словами: «перечислить файлы, начинающиеся с« PREFIX »и любые символы до точки«. », за которой не следует ext1 или ext2».

0

Если вы используете zsh с установленным параметром EXTENDED_GLOB:

pattern~negpattern

где 'pattern' - это то, что вы хотите сопоставить, за исключением всего, что соответствует 'negpattern'.

Пример:

ls -d *~*.mp3

перечислит все файлы в вашем cwd, кроме тех, которые заканчиваются на .mp3.

Если вы не используете zsh, попробуйте, этот вид интеллектуального расширения есть везде.

0

Вы можете использовать:

ls | grep -v *.tex | grep -v *.aux

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .