Devido às especificidades das minhas necessidades de arquivamento, não me sinto confortável com os sólidos arquivos tar.gz e utilizo o 7z.
Eu uso o seguinte comando para fazer isso:
7z a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=off ~/my/folder.7z ~/my/folder/*
Para criar um arquivo de tudo dentro ~/my/folder/
como o ~/my/folder.7z
arquivo.
Mas ~/my/folder/.hiddenFolder
não entra no arquivo então. Como consertar isto? Não *
deveria retornar todos os arquivos e pastas?
*
, tente removê-lo, o 7z deve arquivar todo o diretório.bash
- talvez eu esteja usando a "expansão do caminho do bash" de uma maneira errada?Respostas:
Se você deseja o conteúdo de um único diretório, um método fácil é alterá-lo primeiro:
O que você viu é que se
*
expande para a lista de nomes de arquivos que não começam com a.
. Esse é o comportamento documentado e é o principal motivo pelo qual os arquivos cujo nome começa com a.
ficam ocultos (o outro é quels
não os mostra por padrão).Não existe uma maneira portátil realmente conveniente de listar todos os arquivos em um diretório. Você pode usar
mas se não houver um arquivo que corresponda a um dos padrões, o padrão permanecerá não expandido. No bash, você pode definir a
dotglob
opção para evitar o tratamento de um líder.
especialmente (.
e..
ainda é excluído das correspondências):No ksh, ou no bash, se você definir a
extglob
opção (ou no zsh, se aksh_glob
opção), você pode escrever um padrão que corresponda a todos os arquivos, exceto.
e..
:No zsh, há uma maneira mais simples de dizer que
.
não deve ser tratado especialmente em um padrão:fonte
TL; DR
Mais exemplos
Estrutura de Diretório de Exemplo
Tente seguir os comandos
Pasta raiz com todo o seu conteúdo.
dá
Sem pasta raiz e sem arquivos ocultos
dá
Nenhuma pasta raiz, mas arquivos ocultos estão incluídos (é o que geralmente queremos)
dá
fonte
shopt
.Não,
*
não é para retornar todos os arquivos. Retorna apenas os visíveis.A solução mais fácil é:
fonte