Como faço para copiar um arquivo e acrescentar um número dentro dele?

3

Esse me confundiu - na verdade, estou tentando fazer uma ação personalizada do Thunar para copiar o arquivo selecionado no mesmo diretório, acrescentando um número antes da extensão, por exemplo,

cp file.ext file_1.ext

Alguns comandos parecem fazer isso automaticamente como mogrify -format (exceto que obviamente a extensão muda).

Por exemplo, eu gostaria de copiar um arquivo de imagem para que eu possa mogrify -resize da cópia (que será sobrescrita).

    
por mozerella 12.07.2012 / 23:33

2 respostas

3

A maneira comum de fazer isso no bash é com a expansão do parâmetro . Se a variável file contiver o nome do arquivo, faça algo assim:

name=${file%.*}
extension=${file##*.}
i=1
new_file="${name}_${i}.${extension}

cp "$file" "$new_file"

Para usar isso em um script ( duplicate.sh say), faça algo assim:

#!/bin/bash

name=${1%.*}
extension=${1##*.}
infix="${2:-_1}"

cp -v "$1" "${name}${infix}.${extension}"

Em seguida, chame como:

duplicate.sh FILE INFIX
    
por 12.07.2012 / 23:40
1

Esta é apenas uma versão ligeiramente mais curta da resposta do @ Thor:

name=${file%.*}
extension=${file##*.}

cp "$name"{,_1}."$extension"
    
por 13.07.2012 / 14:06