Aufgrund der Besonderheiten meiner Archivierungsanforderungen bin ich mit soliden tar.gz-Archiven nicht vertraut und verwende stattdessen 7z.
Ich benutze dazu den folgenden Befehl:
7z a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=off ~/my/folder.7z ~/my/folder/*
So erstellen Sie ein Archiv von allem, was sich darin befindet, ~/my/folder/
als ~/my/folder.7z
Datei.
Aber ~/my/folder/.hiddenFolder
doesm't get in das Archiv dann. Wie kann ich das beheben? Soll nicht *
alle Dateien und Ordner zurückgeben?
*
, versuchen Sie, sie zu entfernen. 7z sollte das gesamte Verzeichnis archivieren.bash
- vielleicht verwende ich "Bash Path Expansion" falsch?Antworten:
Wenn Sie den Inhalt eines einzelnen Verzeichnisses möchten, können Sie es zunächst einfach ändern:
Was Sie gesehen haben, ist, dass
*
die Liste der Namen von Dateien erweitert wird, die nicht mit a beginnen.
. Dies ist das dokumentierte Verhalten und der Hauptgrund, warum Dateien, deren Name mit a beginnt.
, als ausgeblendet gelten (das andere ist, dassls
sie standardmäßig nicht angezeigt werden).Es gibt keine wirklich bequeme Möglichkeit, alle Dateien in einem Verzeichnis aufzulisten. Sie können verwenden
Wenn jedoch keine Datei vorhanden ist, die mit einem der Muster übereinstimmt, bleibt das Muster nicht erweitert. In Bash können Sie die
dotglob
Option festlegen , um zu vermeiden, dass ein führender.
Spieler speziell behandelt wird (.
und..
weiterhin von den Spielen ausgeschlossen sind):In ksh oder in bash, wenn Sie die
extglob
Option festlegen (oder in zsh, wenn Sie dieksh_glob
Option festlegen ), können Sie ein Muster schreiben, das mit allen Dateien außer.
und übereinstimmt..
:In zsh gibt es eine einfachere Art zu sagen,
.
die nicht speziell in einem Muster behandelt werden darf:quelle
TL; DR
Mehr Beispiele
Beispiel Verzeichnisstruktur
Versuchen Sie die folgenden Befehle
Stammordner mit seinem gesamten Inhalt.
gibt
Kein Stammordner und keine versteckten Dateien
gibt
Kein Stammordner, aber versteckte Dateien sind enthalten (es ist das, was wir normalerweise wollen)
gibt
quelle
shopt
.Nein,
*
soll nicht alle Dateien zurückgeben. Es werden nur sichtbare zurückgegeben.Die einfachere Lösung ist:
quelle