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

3

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

Exemplo

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

Eu quero compactar os arquivos sem extensão e mover o zip para outro diretório. Por favor me ajude a resolver isso

    
por Saheen 02.06.2017 / 14:34

3 respostas

1

Usando tar utilitário:

tar -cvf noext.zip --exclude=*.* * && mv noext.zip path/to/dest_dir
  • -c - crie um novo arquivo

  • --exclude=*.* - exclui arquivos com base em PATTERN

  • mv noext.zip path/to/dest_dir - mova o arquivo criado para o diretório destino

por 02.06.2017 / 15:32
1

Você pode usar find com uma condição invertida no campo -name com um padrão glob que corresponda a nomes contendo caractere 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 arquivos não com um caractere . em seus nomes e passa para zip de uma só vez para criar o arquivo .zip .

Você pode ter que adicionar as opções de profundidade a find as -mindepth 1 -maxdepth 1 se você quiser localizar os arquivos somente dentro do seu diretório atual.

    
por 02.06.2017 / 15:01
0

Em ksh:

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

No bash, execute shopt -s extglob depois o comando acima. Em zsh, execute setopt ksh_glob , em seguida, o comando acima ou, alternativamente,

setopt extended_glob
zip /another/directory/files_without_extension.zip ^*.*
    
por 04.06.2017 / 02:46