Platzhalter mit ls alle Dateien finden, die passend zu einem bestimmten Muster
Ich versuche zu finden alle PDF-Dateien in einem Ordner und alle Unterordner einfach in den terminal, im Gegensatz zu einem Skript. Ich bin auch ziemlich neu in linux, also bitte um Entschuldigung, wenn ich vergessen habe alles, was offensichtlich ist, oder vielleicht von entscheidender Bedeutung zur Diagnose meines Problems.
Ich bin mit der bash 4.1.5(1)-release (i486-pc-linux-gnu), und haben einige getan, Stossen etwa auf google über glob und extglob Ausdrücken, und es erscheint die syntax, die ich verwenden sollten ist
$ ls **.pdf
Diese aber findet nichts, da es keine passende Datei das Muster *.pdf
im aktuellen Ordner ./
; es scheint zu wollen, zu Lesen **
als *
:
ls: cannot access **.pdf: No such file or directory
Dort sind PDFs, die anderswo, in Unterordnern zwischen 1 und 5 tiefen (insbesondere in jeder Unterordner 1-tief), von denen ich einige sehen können, indem Sie mit
$ ls */*.pdf
Daher ls
ordnungsgemäß zu funktionieren scheint. Handbuch scheint nicht sehr hilfreich sein, da alles was ich sehen konnte, die möglicherweise einen nutzen für uns Berufung ls
mit der -R
- flag, das löst das problem nicht, in jedem der genannten Fälle.
Versuchte ich mit extglob Muster (machen Sie sicher, schalten Sie Sie mit shopt
). Ich kann sehen, meine Tiefe-1-Dateien mit ls */*?(.)pdf
, aber ich kann nicht sehen, nichts mit ls .*(/*)pdf
oder ls .*(/*).pdf
auch in einem Unterverzeichnis, wo gibt es PDF-Dateien.
Ich habe an anderer Stelle gelesen (in Bezug auf den .gitignore
Datei in einem git-repository) , die **
Muster funktioniert nicht für alle.
Könnte dies Auswirkungen auf mich und wie könnte ich dem abhelfen (idealerweise ohne superuser-Privilegien)? Vielleicht dieses (oder ein ähnliches problem) sein, der sich auch auf die extglob Funktionalität?
InformationsquelleAutor Nick Loughlin | 2012-02-08
Du musst angemeldet sein, um einen Kommentar abzugeben.
Möchten Sie vielleicht zu prüfen, finden
oder
wo . ist Ihr Aktuelles Arbeitsverzeichnis. Die glob-Funktionalität kommt mit 4.0+ bash. Die glob-Erweiterungen sind nicht tragbar, in anderen Worten.
InformationsquelleAutor jim mcnamara
Optionen
extglob
undglobstar
sind erforderlich, um die erweiterten Funktionen von derglob
Bibliothek; Sie stellte sich auf die Verwendung der shell-Optionen (shopt
) - Werkzeug, wie unten beschrieben.Verwenden
globstar
(die bewirkt, dass die**
Muster zu Verhalten, wie beschrieben in der bash-manual) man muss es aktivieren (in der bash 4.0+) mitund zu aktivieren, mehr "funktionellen" regex-type Ausdrücke wie
?(ab)
und*(ab)
Ihre volle Wirkung, verwenden SieDrehen Sie die Optionen wieder auszuschalten, geben Sie die
-u
Flagge statts
für eaxampleInformationsquelleAutor Nick Loughlin