open Mac zip compress sem pasta__MACOSX?




zip file mac terminal (11)

Quando eu comprimir arquivos com o compressor zip embutido no Mac OSX, isso resulta em uma pasta extra chamada "__MACOSX" criado no zip extraído.

Posso ajustar minhas configurações para evitar que essa pasta seja criada ou preciso comprar uma ferramenta de compactação de terceiros?

ATUALIZAÇÃO : Acabei de encontrar um aplicativo freeware para o OSX que resolve o meu problema: " YemuZip "

ATUALIZAÇÃO 2 : YemuZip não é mais freeware


Quando tive este problema, fiz da linha de comando:

zip file.zip uncompressed

EDIT , após muitas votações: Eu estava usando essa opção há algum tempo e não sei onde eu aprendi, então não posso dar uma explicação melhor. A answer Chris Johnson está correta, mas não vou deletar a minha. Como um comentário diz, é mais preciso para o que o OP está pedindo, pois ele é compactado sem esses arquivos, em vez de removê-los de um arquivo compactado. Eu também acho mais fácil lembrar.


Dentro da pasta que você deseja compactar, no terminal:

zip -r -X Archive.zip *

Onde -X significa: Exclua os arquivos de recursos invisíveis do Mac, como “_MACOSX” ou “._Filename” e arquivos de armazenamento .ds

source

Nota: Funcionará somente para a pasta e a árvore de pastas subseqüente em que você está e terá o caractere curinga * .


As pastas indesejadas também podem ser excluídas da seguinte maneira:

zip -d filename.zip "__MACOSX*"

Funciona melhor para mim


Pode ser corrigido após o fato pelo zip -d filename.zip __MACOSX/\*


Este comando fez isso por mim:

zip -r Target.zip Source -x "*.DS_Store"

Target.zip é o arquivo zip para criar. Source é o arquivo / pasta de origem para zipar. E o parâmetro _x especifica o arquivo / pasta a não incluir. Se o acima não funcionar por qualquer motivo, tente isso:

zip -r Target.zip Source -x "*.DS_Store" -x "__MACOSX"

É assim que evito o diretório __MACOSX ao compactar arquivos com o comando tar :

$ cd dir-you-want-to-archive $ find . | xargs xattr -l # <- list all files with special xattr attributes ... ./conf/clamav: com.apple.quarantine: 0083;5a9018b1;Safari;9DCAFF33-C7F5-4848-9A87-5E061E5E2D55 ./conf/global: com.apple.quarantine: 0083;5a9018b1;Safari;9DCAFF33-C7F5-4848-9A87-5E061E5E2D55 ./conf/web_server: com.apple.quarantine: 0083;5a9018b1;Safari;9DCAFF33-C7F5-4848-9A87-5E061E5E2D55

Exclua o atributo primeiro:

find . | xargs xattr -d com.apple.quarantine

Correr find . | xargs xattr -l find . | xargs xattr -l find . | xargs xattr -l novamente, certifique-se de que nenhum arquivo tenha o atributo xattr. então você está pronto para ir:

tar cjvf file.tar.bz2 dir


Eu estou usando este Automator Shell Script para consertá-lo depois. Está aparecendo como item de menu contextual (clicando com o botão direito em qualquer arquivo que aparece no Finder).

while read -r p; do
  zip -d "$p" __MACOSX/\* || true
  zip -d "$p" \*/.DS_Store || true
done
  1. Crie um novo serviço com o Automator
  2. Selecione "Arquivos e Pastas" no "Finder"
  3. Adicionar uma "Ação de Script da Shell"


zip -r "$destFileName.zip" "$srcFileName" -x "*/\__MACOSX" -x "*/\.*"
  • -x "*/\__MACOSX" : ignore __MACOSX como você mencionou.
  • -x "*/\.*" : ignora qualquer arquivo oculto, como .DS_Store.
  • Cite a variável para evitar arquivo se for nomeado com SPACE.

Além disso, você pode criar o Automator Service para facilitar o uso no Finder. Confira o link abaixo para ver detalhes, se precisar.

Github


Eu tenho uma solução melhor depois de ler todas as respostas existentes. Tudo poderia ser feito por um fluxo de trabalho em um único clique com o botão direito. Nenhum software adicional, NO stuff de linha de comando complicado e nenhum truque de shell.

O fluxo de trabalho do automator:

  • Entrada: arquivos ou pastas de qualquer aplicativo.
  • Etapa 1: criar arquivo, o sistema integrado com parâmetros padrão.
  • Etapa 2: execute o comando Shell, com entrada como parâmetros. Copie o comando abaixo.

    zip -d "[email protected]" "__MACOSX/*" || true

    zip -d "[email protected]" "*/.DS_Store" || true

Salve e estamos prontos! Basta clicar com o botão direito na pasta ou no volume de arquivos e escolher o fluxo de trabalho no menu de serviços. O arquivo sem metadados será criado ao lado.


Você não pode.

Mas o que você pode fazer é excluir essas pastas indesejadas após a compactação. O zip linha de comando usa argumentos diferentes, onde um, o -d , é para excluir o conteúdo com base em um regex. Então você pode usá-lo assim:

zip -d filename.zip __MACOSX/\*

não feche nenhum arquivo oculto:

zip newzipname filename.any  -x "\.*"

com esta pergunta, deveria ser como:

zip newzipname filename.any  -x "\__MACOSX"

Deve ser dito, no entanto, o comando zip é executado no terminal apenas comprimindo o arquivo, ele não compacta nenhum outro. Então faça isso o resultado é o mesmo:

zip newzipname filename.any




zip