Se vuoi il contenuto di una singola directory, un metodo semplice è quello di cambiarlo prima:
cd ~/my/folder
7z a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=off ~/my/folder.7z .
Quello che hai visto è che si *espande all'elenco dei nomi di file che non iniziano con a .. Questo è il comportamento documentato, ed è il motivo principale per cui i file il cui nome inizia con a .vengono detti nascosti (l'altro è che lsnon li mostra per impostazione predefinita).
Non esiste un modo portatile davvero conveniente per elencare tutti i file in una directory. Puoi usare
~/my/folder/..?* ~/my/folder/.[!.]* ~/my/folder/*
ma se non esiste alcun file corrispondente a uno dei pattern, il pattern rimarrà non espanso. In bash, puoi impostare l' dotglobopzione per evitare di trattare .specialmente un leader ( .e ..sono ancora esclusi dalle partite):
shopt -s dotglob
7z a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=off ~/my/folder.7z ~/my/folder/*
In ksh o in bash se si imposta l' extglobopzione (o in zsh se si imposta l' ksh_globopzione), è possibile scrivere un modello che corrisponda a tutti i file tranne .e ..:
7z a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=off ~/my/folder.7z ~/my/folder/@(..?*|.[!.]*|*)
In zsh, c'è un modo più semplice per dire che .non deve essere trattato in modo speciale in uno schema:
7z a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=off ~/my/folder.7z ~/my/folder/*(D)
*, prova a rimuoverlo, 7z dovrebbe archiviare l'intera directory.