Si vous voulez le contenu d'un seul répertoire, une méthode simple consiste à y changer d'abord:
cd ~/my/folder
7z a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=off ~/my/folder.7z .
Ce que vous avez vu, c'est que *
la liste des noms de fichiers qui ne commence pas par un .
. C'est le comportement documenté, et c'est la principale raison pour laquelle les fichiers dont le nom commence par un .
sont censés être cachés (l'autre est celui ls
qui ne les affiche pas par défaut).
Il n'existe aucun moyen portable vraiment pratique de répertorier tous les fichiers d'un répertoire. Vous pouvez utiliser
~/my/folder/..?* ~/my/folder/.[!.]* ~/my/folder/*
mais s'il n'y a pas de fichier correspondant à l'un des modèles, le modèle restera non développé. En bash, vous pouvez définir l' dotglob
option pour éviter de traiter .
spécialement un interligne ( .
et ..
sont toujours exclus des correspondances):
shopt -s dotglob
7z a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=off ~/my/folder.7z ~/my/folder/*
Dans ksh, ou dans bash si vous définissez l' extglob
option (ou dans zsh si vous définissez l' ksh_glob
option), vous pouvez écrire un modèle qui correspond à tous les fichiers sauf .
et ..
:
7z a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=off ~/my/folder.7z ~/my/folder/@(..?*|.[!.]*|*)
Dans zsh, il y a une façon plus simple de dire que cela .
ne doit pas être traité spécialement dans un modèle:
7z a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=off ~/my/folder.7z ~/my/folder/*(D)
*
, essayez de le supprimer, 7z devrait archiver tout le répertoire.