Comment supprimer des dossiers vides sous Mac OS X?

Réponses:

43

Tout d'abord, notez que la suppression de répertoires vides n'est généralement pas nécessaire. Certains services ou applications peuvent même avoir besoin de certains répertoires pour exister. Soyez conscient de ce que vous faites.

Vous pouvez répertorier les dossiers vides avec find, lorsqu'ils sont exécutés à partir de Terminal.app:

find . -type d -empty

Par défaut, findrépertorie les fichiers et les dossiers, mais ici, les -type drestreint aux répertoires et l' -emptyoption affiche uniquement les répertoires vides. Cela récursive tous les dossiers descendant de votre répertoire personnel ( ou abrégé ). Pour étendre cela à l'ensemble de votre système de fichiers, utilisez:/Users/your-username/~

find / -type d -empty

Ici, /signifie la racine de votre système de fichiers Mac OS X. Vous pouvez bien sûr également utiliser tout autre point de départ, par exemple votre disque externe monté sous ;/Volumes/your-disk-name

find /Volumes/your-disk-name -type d -empty

Maintenant, si vous souhaitez supprimer les findsorties, ajoutez simplement -delete, comme ceci:

find . -type d -empty -delete

Remarque: cela ne demandera pas de confirmation . Il supprimera tous les répertoires qu'il peut, c'est-à-dire ceux où vous avez la permission de supprimer. Ils ne seront pas mis à la poubelle mais disparus pour toujours. Si vous souhaitez être invité avant la suppression, remplacez la commande par quelque chose comme ceci:

find . -type d -empty -exec rm -ri '{}' \;
slhck
la source
Il me donne une sortie sur illegal option -- t typeet emptysemble ne pas pouvoir reconnaître.
AsTeR
1
@AsTeR La version OS X de findrequiert un chemin, donc essayez à nouveau avec find . -type d, non find -type d(ce dernier fonctionne pour GNU find).
slhck
6
Bien que cela fonctionne, il ne localise probablement pas les dossiers qui contiennent uniquement les fichiers .DS_Store cachés, les rendant techniquement non vides mais apparaissant vides pour l'utilisateur. Si un utilisateur veut trouver tous les dossiers qui semblent vides, ceux qu'il avait déjà ouverts dans le Finder ne seront pas trouvés de cette façon car le Finder aurait ajouté un fichier .DS_Store.
SuperTempel
Nous pouvons donc avoir besoin de le faire en deux étapes: supprimez d'abord les fichiers .DS_Store (peut être fait en utilisant findde la même manière que ci-dessus), puis utilisez la commande suggérée pour supprimer les répertoires vides restants.
gerlos
6

J'ai créé un petit programme gratuit qui résout mieux cela:

http://www.macupdate.com/app/mac/52551/find-empty-folders

L'avantage de ce programme est qu'il trouve également des dossiers qui sont apparemment vides mais contiennent le fichier invisible ".DS_Store".

Et il vous permet également de déplacer immédiatement les éléments trouvés dans la corbeille.

SuperTempel
la source
Ce serait bien s'il peut également gérer le fichier Icon - superuser.com/questions/298785/icon-file-on-os-x-desktop
kenchew
@kenchew Je crois que vous cherchez cecifind ~/Documents -type f -name 'Icon?' -print -delete;
JayRizzo
2

Pour poursuivre cet effort:

J'ai créé un script que j'utilise pour nettoyer mon dossier de documents de temps en temps, car je suis en voie de TOC et fatigué d'être surchargé APP & comme la simplicité.

Je l'ai fait dans un effort pour améliorer et fournir une solution alternative.

Enfin, pour le fichier d'icônes de @ kenche, cela ne semble pas exister sur mon mac car je n'ai pas modifié les icônes de mon dossier, mais vous pouvez le faire dans l'inspecteur. En faisant glisser une image en haut à gauche, il créera le Icon^Mfichier sur ce répertoire.

Pour les trouver aussi, vous pouvez exécuter:

(Devriez-vous être paranoïaque si vous trouvez un faux positif, utilisez: ctrl+ v ctrl+ mau lieu de?)

find ~/Documents -type f -name 'Icon?' -print;
# and to remove 
find ~/Documents -type f -name 'Icon?' -print -delete;

IMPORTANT

Veuillez, comme @slhck l'a indiqué ci-dessus: Certains services ou applications peuvent même avoir besoin de certains répertoires pour exister. Cela s'applique également aux fichiers DS_Store & Icon, VEUILLEZ être conscient de ce que vous faites. Remarque: ce script ne demandera pas de confirmation. Il supprimera tous les répertoires qu'il peut. c'est-à-dire ceux où vous avez des autorisations pour supprimer. Ils ne seront pas mis à la poubelle mais disparus pour toujours.

Script BASH

#!/bin/bash
# =============================================================================
# MAC OSX HIGH SIERRA 10.13.4 (17E199)
# Terminal: Version: 2.8.2 64-Bit (Intel): Yes
# Terminal Location: /Applications/Utilities/Terminal.app
# =============================================================================
# Terminal CLEAN UP YOUR DOCUMENTS FOLDER.
# =============================================================================
# START WHAT IS BELIEVED TO BE EMPTY NOW.
# =============================================================================
echo 'Searching Documents for empty folders...'
find ~/Documents -type d -empty;
# =============================================================================
# SHOW & THEN REMOVE ALL MAC OS DS_Store FILES
# =============================================================================

echo 'Searching Documents for DS_Store files...'
find ~/Documents -type f -name ".DS_Store" -print;

echo 'Removing DS_Store files...'
find ~/Documents -type f -name ".DS_Store" -print -delete;
# =============================================================================
# SHOW & THEN REMOVE ALL MAC OS ZERO SIZED FILES
# =============================================================================
echo 'Searching Documents for ZERO file sized files...'
find ~/Documents -type f -empty;

echo 'Removing ZERO file sized files...'
find ~/Documents -type f -empty -delete;
# =============================================================================
# SHOW & THEN REMOVE Icon^M FILES
# USE THE ? MARK FOR EASE OF USE YOU CAN ALSO SUB 'CTRL + V & CTRL + M' FOR ^M 
# =============================================================================

echo 'Searching Documents for Icon files...'
find ~/Documents -type f -name 'Icon?' -print;

echo 'Removing Icon files from Documents...'
find ~/Documents -type f -name 'Icon?' -print -delete;

# SEEMINGLY THE SAME AS
# find ~/Documents -type f -size 0 -print
# find ~/Documents -type f -size 0 -print -delete
# =============================================================================
# SHOWCASE NEW FOUND EMPTY FOLDERS
# =============================================================================
echo 'Showcasing new result of existing and new found empty folders...'
find ~/Documents -type d -empty;

echo 'Deleting result of empty folders...'
find ~/Documents -type d -empty -delete;

echo 'Showcasing the removal of said, 'empty folders'...'
find ~/Documents -type d -empty;

Fin du script.

Le script peut être vu ici sur GitHub

Les références:

À propos des icônes qui représentent des fichiers sur votre Mac

Est-il possible de supprimer tous les dossiers contenant uniquement .DS_Store de manière récursive?

Rechercher des dossiers et sous-dossiers contenant uniquement ".DS_Store"

Comment trouver tous les fichiers de zéro octet dans un répertoire, y compris les sous-répertoires

Icône? fichier sur le bureau OS X

JayRizzo
la source