
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ÃOmv noext.zip path/to/dest_dir
- mover o arquivo criado para odestinodiretório
Responder2
Você pode usar find
uma condição invertida no -name
campo 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 .zip
arquivo.
Talvez você precise adicionar as opções de profundidade find
como -mindepth 1 -maxdepth 1
se quisesse localizar os arquivosapenasdentro do seu diretório atual.
Responder3
Em ksh:
zip /another/directory/files_without_extension.zip !(*.*)
No bash, execute shopt -s extglob
o comando acima. No zsh, execute setopt ksh_glob
o comando acima ou, alternativamente,
setopt extended_glob
zip /another/directory/files_without_extension.zip ^*.*