Como criar um serviço do Automator para compactar um arquivo no formato gzip ou bzip ao clicar no botão direito do mouse sobre uma pasta ou arquivo?

0

Alguém tem um script para usar no serviço Automator para compactar um arquivo, arquivos, uma pasta ou pastas ao clicar com o botão direito do mouse? Seria uma opção alternativa para a opção Compress, que compactar para zip.

    
por tenshimsm 24.11.2013 / 16:20

1 resposta

2

Escolha o modelo de serviço e use um script de shell como este:

n=$1
[[ -e $n.tgz ]] && { i=2; n="$1-$i"; }
while [[ -e $n.tgz ]]; do n="${n%-*}-$((i++))"; done
d=${1%/*}
cd -- "$d"
COPYFILE_DISABLE= tar -czf "$n.tgz" -- "${@#"$d/"}"

Mude -z para -j e tgz para tbz para usar bzip2.

O serviço geralmente deve ser usado com uma única pasta como entrada. Se a entrada for de vários arquivos, ela não criará um diretório contendo os arquivos.

A configuração de COPYFILE_DISABLE diz ao tar para remover atributos estendidos e ACLs em vez de usar o formato AppleDouble:

$ touch a;xattr -w key value a
$ tar -cf a.tar a;tar -tf a.tar
./._a
a
$ COPYFILE_DISABLE= tar -cf a2.tar a;tar -tf a2.tar
a
$
    
por 25.11.2013 / 16:32