Alles andere als * {. Tex, .aux} von ls auflisten

6090
Léo Léopold Hertz 준영

Wie kannst du lssonst noch die Dateien *{.tex, .aux}?

Ich renne erfolglos

ls -I".tex" 
4
Kann jemand anderes als / außer für / g? las3rjock vor 14 Jahren 0

5 Antworten auf die Frage

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

oder

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

Wenn Sie bash verwenden und die extglobShell-Option gesetzt haben (was normalerweise der Fall ist):

ls !(*.tex|*.aux) 
Das ist der eine. Diese gleiche Frage finden Sie unter ServerFault: http://serverfault.com/questions/41783/how-can-i-specify-a-shell-pattern-that-excludes-certain-files Telemachus vor 14 Jahren 1
Oder diese Frage bei Stack Overflow: http://stackoverflow.com/questions/670460/move-all-files-except-one Was ist eine Frage des gleichen Benutzers, bei der ich bereits dieselbe Antwort gegeben habe ... sth vor 14 Jahren 1
@Sth: Nun, du hast wenigstens zwei positive Stimmen von mir bekommen. (Ich habe mich nur an den Thread auf Serverfault erinnert, da ich diesen Trick dort gelernt habe.) Telemachus vor 14 Jahren 1
1
sdaau

Dank der Antwort von @sth habe ich endlich einen lsBefehl gefunden, der mit einem Präfix-Auswahlmuster funktioniert (dort funktioniert die Option zum Ausblenden nicht). Erwägen:

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 

Die Antwort für diesen Fall ist also zu verwenden ls PREFIX*.!(ext1|ext2), oder mit anderen Worten: "Listen Sie Dateien auf, die mit" PREFIX "beginnen und alle Zeichen bis zu einem Punkt". ", Der nicht von ext1 oder ext2 gefolgt wird."

Ich denke, das ist die beste Antwort, weil es die genauesten Erklärungen dafür gibt, warum der letzte Ansatz die richtige Wahl ist. Vielen Dank für Ihre Antwort mit klarer Erklärung! Léo Léopold Hertz 준영 vor 9 Jahren 1
0
Atmocreations

Sie können verwenden:

ls | grep -v *.tex | grep -v *.aux 
Ich glaube nicht, dass das so ist, wie Sie glauben. `grep` verwendet reguläre Ausdrücke als Parameter, keine Shell-Platzhalter. Außerdem erweitert die Shell diese Platzhalter ohnehin zuerst. Greg Hewgill vor 14 Jahren 0
"ls | grep -v .tex | grep -v .aux" scheint zu funktionieren. (Auf meinem Rechner nimmt ls nicht die Flag -I oder --hide an.) las3rjock vor 14 Jahren 0
Sie könnten auch einen Regex mit egrep verwenden: `ls | egrep -v '(aux | tex) $' ` mtak vor 10 Jahren 0
0
anthonya7

Wenn Sie zsh mit der Option EXTENDED_GLOB verwenden, legen Sie Folgendes fest:

pattern~negpattern 

Wobei "Muster" das ist, was Sie anpassen möchten, mit Ausnahme von "Negpattern".

Beispiel:

ls -d *~*.mp3 

listet alle Dateien in Ihrer cwd auf, mit Ausnahme der Dateien, die auf ".mp3" enden.

Wenn Sie zsh nicht verwenden, probieren Sie es aus, diese Art der intelligenten Erweiterung ist überall vorhanden.