Wenn Sie den Inhalt eines einzelnen Verzeichnisses möchten, können Sie es zunächst einfach ändern:
cd ~/my/folder
7z a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=off ~/my/folder.7z .
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, dass ls
sie standardmäßig nicht angezeigt werden).
Es gibt keine wirklich bequeme Möglichkeit, alle Dateien in einem Verzeichnis aufzulisten. Sie können verwenden
~/my/folder/..?* ~/my/folder/.[!.]* ~/my/folder/*
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):
shopt -s dotglob
7z a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=off ~/my/folder.7z ~/my/folder/*
In ksh oder in bash, wenn Sie die extglob
Option festlegen (oder in zsh, wenn Sie die ksh_glob
Option festlegen ), können Sie ein Muster schreiben, das mit allen Dateien außer .
und übereinstimmt ..
:
7z a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=off ~/my/folder.7z ~/my/folder/@(..?*|.[!.]*|*)
In zsh gibt es eine einfachere Art zu sagen, .
die nicht speziell in einem Muster behandelt werden darf:
7z a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=off ~/my/folder.7z ~/my/folder/*(D)
*
, versuchen Sie, sie zu entfernen. 7z sollte das gesamte Verzeichnis archivieren.