Если вы хотите, чтобы содержимое одного каталога было проще, сначала измените его:
cd ~/my/folder
7z a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=off ~/my/folder.7z .
То, что вы видели, это то, что *расширяется до списка имен файлов, которые не начинаются с .. Это задокументированное поведение, и это основная причина, по которой файлы, имена которых начинаются с символа, .называются скрытыми (другая причина - lsони не отображаются по умолчанию).
Не существует действительно удобного переносимого способа перечисления всех файлов в каталоге. Ты можешь использовать
~/my/folder/..?* ~/my/folder/.[!.]* ~/my/folder/*
но если нет файла, соответствующего одному из шаблонов, шаблон останется нерасширенным. В bash вы можете установить dotglobопцию, чтобы избежать особой обработки ведущего .( .и ..все еще исключены из матчей):
shopt -s dotglob
7z a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=off ~/my/folder.7z ~/my/folder/*
В ksh или в bash, если вы установили extglobпараметр (или в zsh, если вы установили ksh_globпараметр), вы можете написать шаблон, который соответствует всем файлам, кроме .и ..:
7z a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=off ~/my/folder.7z ~/my/folder/@(..?*|.[!.]*|*)
В zsh есть более простой способ сказать, что .не должен обрабатываться специально в шаблоне:
7z a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=off ~/my/folder.7z ~/my/folder/*(D)
*, попробуйте удалить его, 7z должен заархивировать весь каталог.