Tous les articles

Comment compresser chaque fichier ou dossier à part sur Mac

· 7 min de lecture

Dix dossiers de clients, et chaque client ne doit recevoir que le sien. Une semaine d'enregistrements à envoyer un par un. De vieux projets à archiver, un ZIP chacun. Sélectionnez-les tous dans le Finder, choisissez Compresser, et vous obtenez un seul fichier Archive.zip qui contient tout.

La réponse courte :

  • Le Finder ne sait pas faire une archive par élément. Compressez les éléments un par un, ou utilisez la boucle du Terminal ci-dessous, que vous pouvez aussi transformer en action rapide.
  • Dans Folia Files, sélectionnez les éléments, faites un clic droit, allez sur Compresser et, sous Chaque élément à part, choisissez ZIP, 7Z, TAR.GZ ou TAR.XZ. Chaque élément a sa propre archive, juste à côté de lui.

Ce que fait « Compresser » dans le Finder

Faites un clic droit sur un seul élément et choisissez Compresser « Atlas » : vous obtenez un ZIP à son nom, Atlas.zip pour un dossier, rapport.pdf.zip pour un fichier. Sélectionnez plusieurs éléments et la commande devient Compresser 3 éléments (ou le nombre que vous avez sélectionné). Ils vont tous dans une seule archive, Archive.zip, dans le même dossier.

Aucun réglage ne permet d'obtenir une archive par élément. Soit vous les compressez un par un, soit vous laissez un petit script s'en charger.

Compresser chaque élément à part dans le Terminal

macOS fournit ditto, un outil de copie qui sait aussi faire des archives ZIP comme le Finder. Une courte boucle le lance une fois pour chaque élément d'un dossier :

  1. Ouvrez le Terminal (dans Applications › Utilitaires).
  2. Tapez cd suivi d'une espace, glissez le dossier qui contient les éléments sur la fenêtre du Terminal, puis appuyez sur ↩.
  3. Collez ces lignes et appuyez sur ↩ :
for item in ./*; do
  [[ "$item" == *.zip || -e "$item.zip" ]] && continue
  if [[ -d "$item" ]]; then
    ditto -c -k --sequesterRsrc --keepParent "$item" "$item.zip"
  else
    ditto -c -k --sequesterRsrc "$item" "$item.zip"
  fi
done

Chaque élément du dossier a maintenant son ZIP à côté de lui : Atlas.zip à côté du dossier Atlas, rapport.pdf.zip à côté de rapport.pdf. Lancez la boucle dans un dossier qui ne contient que ce que vous voulez archiver, car chaque fichier et chaque dossier qui s'y trouve reçoit une archive. Ce que fait chaque partie :

  • ./* passe en revue les éléments du dossier, sauf les éléments cachés (ceux dont le nom commence par un point). Le ./ placé devant évite qu'un nom commençant par un tiret soit pris pour une option.
  • La deuxième ligne saute les fichiers ZIP eux-mêmes et tout élément qui a déjà son archive : relancer la boucle ne refait rien et n'écrase rien.
  • Un dossier est archivé avec --keepParent, pour qu'il redonne le dossier lui-même une fois décompressé. Un fichier est archivé seul : avec --keepParent, ditto le rangerait dans un dossier portant le nom de celui où il se trouve.
  • --sequesterRsrc range les données propres au Mac dans un dossier __MACOSX à l'intérieur de l'archive, comme le font les ZIP du Finder.

Les noms avec des espaces ou des accents ne posent aucun problème : chaque $item est entre guillemets.

La commande tar de macOS sait écrire les autres formats. Remplacez le bloc if … fi par l'une de ces lignes, et .zip dans la deuxième ligne par la même extension :

  • TAR.GZ : tar -czf "$item.tar.gz" "$item"
  • TAR.XZ : tar -cJf "$item.tar.xz" "$item"
  • 7Z : tar --format 7zip -cf "$item.7z" "$item"

Si vous utilisez Folia Files, faites un clic droit dans le fond du dossier et choisissez Ouvrir dans un terminal : le terminal s'ouvre dans ce dossier, plus besoin de cd. La version du site propose aussi le Terminal de Folia Files, qui s'ouvre sous le panneau, comme ci-dessous.

La même boucle lancée dans le terminal sous un panneau de Folia Files : les dossiers Atlas, Design et le site web ont chacun leur ZIP

Faire de la boucle une action rapide

Pour l'avoir à portée de clic droit dans le Finder :

  1. Ouvrez Automator, choisissez Fichier › Nouveau, sélectionnez Action rapide et cliquez sur Choisir.
  2. Dans la barre du haut, réglez Le processus reçoit l’élément actuel sur fichiers ou dossiers, et dans sur Finder.app.
  3. Glissez l'action Exécuter un script Shell de la bibliothèque dans le processus. Vérifiez que Shell indique /bin/zsh, réglez Données en entrée sur comme arguments, puis remplacez son texte par la boucle ci-dessus, en changeant sa première ligne en for item in "$@"; do (les éléments sur lesquels vous avez fait un clic droit).
  4. Enregistrez avec ⌘S, sous un nom comme « Compresser chacun à part ».

Elle apparaît désormais sous Actions rapides quand vous faites un clic droit sur des fichiers dans le Finder. Réglée sur Finder.app, elle reste absente des menus des autres apps, pour une raison expliquée dans pourquoi votre action rapide Automator n'apparaît que dans le Finder (la version du site de Folia Files la propose quand même).

Dans Folia Files : Compresser › Chaque élément à part

Folia Files le fait depuis son menu contextuel, dans toutes les vues :

  1. Sélectionnez les éléments : ⌘-clic ou ⇧-clic, ou ⌘A pour tout sélectionner.
  2. Faites un clic droit sur l'un d'eux et allez sur Compresser.
  3. Les quatre formats du haut font une seule archive de toute la sélection, Archive.zip, comme le Finder. Sous Chaque élément à part, les quatre mêmes formats font une archive par élément. Cette seconde partie apparaît dès que deux éléments ou plus sont sélectionnés.

Le sous-menu Compresser sur trois dossiers sélectionnés : ZIP, 7Z, TAR.GZ et TAR.XZ, puis les mêmes formats sous Chaque élément à part

Ce que vous obtenez :

  • Une archive à côté de chaque élément, à son nom : Atlas.zip, Design.zip… Un fichier garde son extension dans le nom, Notes.md.zip, comme avec le Finder.
  • Rien n'est remplacé. Si Atlas.zip existe déjà, la nouvelle s'appelle Atlas 2.zip.
  • Des éléments de plusieurs dossiers. Dans la vue Arborescence, vous pouvez sélectionner des éléments dans différents sous-dossiers : chaque archive arrive à côté de son élément.
  • Les nouvelles archives sélectionnées une fois prêtes, à glisser dans un e-mail, ou sur un dossier de cloud ou de serveur ouvert dans l'autre panneau.

Compresser côtoie les autres outils d'archives et de fichiers du menu contextuel, présentés sur la page des outils de fichiers.

Suivre, mettre en pause ou annuler dans Opérations

Folia Files fait les archives l'une après l'autre, pas toutes à la fois : plusieurs archiveurs lancés ensemble ne feraient que se disputer le disque. Chaque archive est une ligne dans Opérations, le bouton de la barre d'outils qui suit aussi les copies et les déplacements (ou Fenêtre › Opérations en cours, ⌃⌘O) :

  • Compression en .zip (ou .7z, .tar.gz…), avec une barre de progression fondée sur la taille mesurée avant de commencer, le nom du fichier en cours d'ajout, ce qui est fait sur le total, la vitesse et le temps restant. Les archives qui attendent leur tour indiquent Préparation….
  • Le bouton de pause arrête l'archiveur là où il en est, et Reprendre repart de là. Les archives suivantes attendent.
  • Le bouton ✕ (Annuler) arrête une archive. Chaque archive est écrite sous un nom caché à côté des éléments et ne prend son vrai nom qu'une fois complète : une archive annulée ne laisse rien derrière elle, et un fichier à moitié écrit n'a jamais l'air terminé. Les archives déjà faites restent, et les autres continuent.

ZIP, 7Z, TAR.GZ ou TAR.XZ ?

  • ZIP s'ouvre d'un double-clic sur un Mac comme sur un PC Windows, sans rien installer. C'est celui des clients, des collègues, et de tous ceux dont vous ne connaissez pas l'ordinateur.
  • 7Z donne en général des archives plus petites que ZIP, surtout avec des documents, du texte et du code. Tous les ordinateurs ne l'ouvrent pas sans une app en plus : gardez-le pour ceux qui en ont une, ou pour vos propres archives.
  • TAR.GZ est l'habitude des serveurs Linux et des développeurs. Il garde tels quels les droits Unix et les liens symboliques.
  • TAR.XZ est en général plus petit que TAR.GZ, et plus lent à faire.

Les photos, les vidéos et la musique sont déjà compressées : aucun format ne les rend beaucoup plus petites. Archivez-les pour les garder ensemble ou les envoyer, pas pour gagner de la place.

Les rouvrir

Dans Folia Files, un double-clic sur une archive ZIP, 7Z ou TAR l'ouvre dans le panneau comme un dossier, en lecture seule ; Extraire ici la décompresse à côté de l'archive, et Extraire vers dans un autre dossier. Comment ouvrir un fichier ZIP sans l'extraire donne les détails.

En bref

  • Finder : un seul Archive.zip pour toute la sélection, quoi que vous sélectionniez.
  • Terminal : la boucle ditto ci-dessus, ou tar pour TAR.GZ, TAR.XZ et 7Z ; la même boucle tient dans une action rapide d'Automator.
  • Folia Files : Compresser › Chaque élément à part, puis le format. Une archive à côté de chaque élément, suivie dans Opérations, et rien qui traîne si vous annulez.