Script com comandos split & cat [duplicado]

0

Eu quero dividir uma imagem.jpg em partes e mesclar novamente. Eu usei os seguintes comandos:

split -b 1440 image.jpg # It divides it into 6 parts.
cat xaa.jpg xab.jpg xac.jpg xad.jpg xae.jpg xaf.jpg > new-image.jpg 

Agora eu quero um script que faça o mesmo trabalho dos comandos anteriores.

    
por thmk 22.05.2018 / 23:38

1 resposta

1

Que tal isso:

#!/bin/bash

# test whether first argument exists and is a regular file, if not exit
[ -f "$1" ] || exit 1

# put 1440 bytes per output file
split -b 1440 "$1" "$1". &&

# merge files again
cat "$1".* >"${1%/*}/new-${1##*/}"

Um script começa com uma especificando o programa com o qual ele deve ser executado, neste caso,% código%. Primeiro, testamos o primeiro argumento para o script ser um arquivo regular e sair, se não for. O comando /bin/bash divide o arquivo fornecido como o primeiro argumento e cria arquivos de saída como split para um arquivo image.jpg.aa . Somente se image.jpg sair com êxito, o comando split irá mesclá-los novamente usando Expansão do nome do caminho de cat e Expansão de Parâmetros e salva a saída (ou seja, o arquivo mesclado) como bash para um arquivo new-image.jpg .

Salve este script como, por exemplo, image.jpg , torne-o executável com splitmerge.bash e execute-o com:

splitmerge.bash image.jpg

Todos os arquivos de saída são criados no diretório do arquivo de entrada, independentemente do diretório atual. Se o script e / ou o arquivo a ser dividido não estiver localizado no diretório atual, use caminhos absolutos, por exemplo:

~/scripts/splitmerge.bash /home/thmk/test/image.jpg
    
por dessert 23.05.2018 / 07:57