Como compactar um tipo específico de arquivo em um diretório

Como compactar um tipo específico de arquivo em um diretório

Estou tendo três tipos de arquivos em um diretório como.TXT,.csve arquivos sem extensões.

Exemplo

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

Quero compactar os arquivos sem extensão e movê-lo para outro diretório. Por favor me ajude a resolver isso

Responder1

UsandoalcatrãoUtilitário:

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

  • -c- crie um novo arquivo

  • --exclude=*.*- excluir arquivos com base emPADRÃO

  • mv noext.zip path/to/dest_dir- mover o arquivo criado para odestinodiretório

Responder2

Você pode usar finduma condição invertida no -namecampo com um padrão glob que corresponda a nomes contendo caracteres de ponto, conforme abaixo

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

A expressão obtém todos os arquivosnãotendo um .caractere em seus nomes e passa-o para zipar de uma só vez para criar o .ziparquivo.

Talvez você precise adicionar as opções de profundidade findcomo -mindepth 1 -maxdepth 1se quisesse localizar os arquivosapenasdentro do seu diretório atual.

Responder3

Em ksh:

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

No bash, execute shopt -s extglobo comando acima. No zsh, execute setopt ksh_globo comando acima ou, alternativamente,

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

informação relacionada