Cómo comprimir el tipo particular de archivo en un directorio

Cómo comprimir el tipo particular de archivo en un directorio

Tengo tres tipos de archivos en un directorio como.TXT,.csvy archivos sin extensiones.

Ejemplo

test
nest
prod
test.csv
prod.txt
nest.csv

Quiero comprimir los archivos sin extensión y mover ese zip a otro directorio. Por favor ayúdame a solucionar esto

Respuesta1

Usandoalquitránutilidad:

tar -cvf noext.zip --exclude=*.* * && mv noext.zip path/to/dest_dir

  • -c- crear un nuevo archivo

  • --exclude=*.*- excluir archivos segúnPATRÓN

  • mv noext.zip path/to/dest_dir- mover el archivo creado aldestinodirectorio

Respuesta2

Puede usarlo findcon una condición de inversión en el -namecampo con un patrón global que coincida con nombres que contienen caracteres de punto, como se muestra a continuación.

find . -type f ! -name "*.*" -exec zip filename.zip "{}" + 
[ -f filename.zip ] && mv filename.zip /to_whatever_path_needed/

La expresión obtiene todos los archivos.notener un .carácter en sus nombres y lo pasa al zip en una sola vez para crear el .ziparchivo.

Es posible que tengas que agregar las opciones de profundidad findcomo -mindepth 1 -maxdepth 1si quisieras ubicar los archivos.solodentro de su directorio actual.

Respuesta3

En ksh:

zip /another/directory/files_without_extension.zip !(*.*)

En bash, ejecute shopt -s extglobluego el comando anterior. En zsh, ejecute setopt ksh_globel comando anterior o alternativamente

setopt extended_glob
zip /another/directory/files_without_extension.zip ^*.*

información relacionada