Copie arquivo1 para arquivo2, exceto o byte final em 1 comando

Copie arquivo1 para arquivo2, exceto o byte final em 1 comando

Preciso descobrir como poderia copiar um arquivo1 para um arquivo2, exceto o último byte. Estive olhando em volta e encontrei o comando dd, mas a opção skip só permite pular no início do arquivo de entrada.

Obrigado

Responder1

Usando head -c:

   -c, --bytes=[-]NUM
          print  the  first  NUM bytes of each file; with the leading '-',
          print all but the last NUM bytes of each file

Então

head -c -1 file1 > file2

Responder2

Derivado de uma resposta postada em"Como faço para cortar apenas o último byte de um arquivo no Bash?" no Quora:

dd if=file1 of=file2 bs=1 count=$(( $( find file1 -printf '%s' ) - 1 ))

Ou...

dd if=file1 of=file2 bs=1 count=$(( $( stat -c%s file1 ) - 1 ))

No entanto, head -cconforme afirmado na outra resposta, é a solução mais fácil.

informação relacionada