Перечисление всего, кроме *{. Tex, .aux} от ls
Как ты можешь ls
все остальное файлы *{.tex, .aux}
?
Я бегаю неудачно
ls -I".tex"
5 ответов
Благодаря ответу @sth, я наконец нашел ls
команда, которая работает с шаблоном выделения префикса (там не работает опция скрытия); рассматривать:
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".
Если вы используете Bash и есть extglob
набор параметров оболочки (что обычно имеет место):
ls !(*.tex|*.aux)
Если вы используете zsh с установленным параметром EXTENDED_GLOB:
pattern~negpattern
где 'pattern' - это то, что вы хотите сопоставить, за исключением всего, что соответствует 'negpattern'.
Пример:
ls -d *~*.mp3
отобразит список всех файлов в вашем cwd, кроме тех, которые заканчиваются на.mp3.
Если вы не используете zsh, попробуйте, этот вид интеллектуального расширения есть везде.