Debido a los detalles específicos de mis necesidades de archivo, no me siento cómodo con los archivos tar.gz sólidos y uso 7z en su lugar.
Yo uso el siguiente comando para hacer esto:
7z a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=off ~/my/folder.7z ~/my/folder/*
Para crear un archivo de todo dentro ~/my/folder/
como el ~/my/folder.7z
archivo.
Pero ~/my/folder/.hiddenFolder
no entra en el archivo entonces. ¿Cómo arreglar esto? ¿No se *
supone que debe devolver todos los archivos y carpetas?
*
, intente eliminarla, 7z debería archivar todo el directorio.bash
: ¿tal vez estoy usando "expansión de ruta bash" de una manera incorrecta?Respuestas:
Si desea el contenido de un único directorio, un método fácil es cambiarlo primero:
Lo que viste es que se
*
expande a la lista de nombres de archivos que no comienzan con a.
. Ese es el comportamiento documentado, y es la razón principal por la que.
se dice que los archivos cuyo nombre comienza con a están ocultos (el otro es quels
no los muestra por defecto).No hay una forma portátil realmente conveniente de enumerar todos los archivos en un directorio. Puedes usar
pero si no hay un archivo que coincida con uno de los patrones, el patrón permanecerá sin expandir. En bash, puede configurar la
dotglob
opción para evitar tratar un líder.
especialmente (.
y..
aún están excluidos de las coincidencias):En ksh, o en bash si configura la
extglob
opción (o en zsh si configura laksh_glob
opción), puede escribir un patrón que coincida con todos los archivos excepto.
y..
:En zsh, hay una manera más simple de decir que
.
no debe tratarse especialmente en un patrón:fuente
TL; DR
Más ejemplos
Ejemplo de estructura de directorios
Intenta seguir los comandos
Carpeta raíz con todos sus contenidos.
da
Sin carpeta raíz y sin archivos ocultos
da
No hay carpeta raíz, pero se incluyen archivos ocultos (es lo que generalmente queremos)
da
fuente
shopt
.No,
*
no se supone que devuelva todos los archivos. Solo devuelve los visibles.La solución más fácil es:
fuente