Wie wähle ich alle Dateien aus, die mit .txt
im aktuellen Verzeichnis enden, lasse jedoch alle Dateien in den Unterverzeichnissen weg?
*.txt
Wählt auch alle Dateien aus, die .txt
in den Unterverzeichnissen enden . Wie lasse ich sie weg?
Verzeichnisaufbau:
current folder
|-first_file.txt
|-sub_folder
|-second_file
Ich versuche, die erste Datei alleine zu einem Git-Repository hinzuzufügen. Durch git add *.txt
Hinzufügen wird jedoch sowohl die erste als auch die zweite Datei zur Bühne hinzugefügt. Ich möchte, dass nur die erste Datei hinzugefügt wird.
Antworten:
Es gibt einen subtilen Unterschied, ob die Shell oder der Git das Muster handhaben.
git
Berücksichtigt auch Unterverzeichnisse, die Shell nicht. Also in deinem Fall rennenWährend das aktuelle Verzeichnis Ihr "aktueller Ordner" ist, kann die Shell die Platzhaltererweiterung durchführen (und fügt daher nur übereinstimmende Dateien im aktuellen Verzeichnis hinzu).
Ausarbeiten
git add *.txt
Platzhaltern erfolgt die Erweiterung durch die Shell, wird alsogit
tatsächlich mit aufgerufengit add file1.txt file2.txt
(was bedeutet, dassgit
nur die übergebenen Dateinamen genommen und hinzugefügt werden). Nur hier Nachteil ist , dass wenn es keine Dateien Anpassung*.txt
git
wird so läuftgit add *.txt
doch was natürlich auslösengit
s Unterverzeichnis Scangit add '*.txt'
Wildcard wird eine Erweiterung durchgeführt,git
die immer auch einen Unterverzeichnis-Scan impliziert.quelle
*.txt
oder entkommst du dem*
? Wenn ja, nicht.git add --help
(Suche nach BEISPIELEN). Unter anderem sagt t Ihnen " .... Da in diesem Beispiel die Shell das Sternchen erweitern kann (dh Sie listen die Dateien explizit auf), wird subdir / git-foo.sh nicht berücksichtigt ". Beachten Sie jedoch, dass gemäß dem Standard-Shell-Verhalten, wenn*.txt
keine Dateien im aktuellen Verzeichnis übereinstimmen, diesegit
als Literalzeichenfolge übergeben werden.