¿Cómo puedo eliminar carpetas vacías en Mac OS X?


Respuestas:


43

En primer lugar, tenga en cuenta que, por lo general, no es necesario eliminar directorios vacíos. Algunos servicios o aplicaciones pueden incluso necesitar ciertos directorios para existir. Sé consciente de lo que estás haciendo.

Puede enumerar carpetas vacías con find, cuando se ejecuta desde Terminal.app:

find . -type d -empty

De manera predeterminada, findenumera los archivos y carpetas, pero aquí, lo -type drestringe a directorios, y la -emptyopción muestra solo directorios vacíos. Esto repetirá todas las carpetas que descienden de su directorio de inicio ( o corto ). Para expandir esto a todo su sistema de archivos, use:/Users/your-username/~

find / -type d -empty

Aquí, /significa la raíz de su sistema de archivos Mac OS X. Por supuesto, también puede usar cualquier otro punto de partida, por ejemplo, su disco externo montado debajo ;/Volumes/your-disk-name

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

Ahora, si desea eliminar cualquier findsalida, simplemente agregue -delete, así:

find . -type d -empty -delete

Nota: Esto no solicitará confirmación . Eliminará todos los directorios que pueda, es decir, aquellos en los que tenga permisos para eliminar. No serán trasladados a la basura sino desaparecidos para siempre. Si desea que se le pregunte antes de la eliminación, cambie el comando a algo como lo siguiente:

find . -type d -empty -exec rm -ri '{}' \;

Me da salida sobre illegal option -- t typey emptyparece no poder reconocer.
AsTeR

1
@AsTeR La versión de OS X findrequiere una ruta, así que intente nuevamente con find . -type d, no find -type d(este último funciona para GNU find).
slhck

66
Si bien esto funciona, probablemente no encuentre carpetas que solo contengan los archivos .DS_Store ocultos, lo que los hace técnicamente no vacíos, pero parecen vacíos para el usuario. Si un usuario desea encontrar todas las carpetas que aparecen vacías, las que alguna vez abrió en Finder no se encontrarán de esta manera porque Finder habría agregado un archivo .DS_Store.
SuperTempel

Por lo tanto, es posible que debamos hacerlo en dos pasos: primero elimine los archivos .DS_Store (se puede hacer findde la misma manera que antes) y luego use el comando sugerido para eliminar los directorios vacíos restantes.
gerlos

6

He creado un programa pequeño y gratuito que resuelve esto mejor:

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

La ventaja de este programa es que también encuentra carpetas que aparentemente están vacías pero que contienen el archivo invisible ".DS_Store".

Y también le permite mover los elementos encontrados a la Papelera de inmediato.


Sería bueno si se puede manejar el archivo de icono, así - superuser.com/questions/298785/icon-file-on-os-x-desktop
kenchew

@kenchew Creo que estás buscando estofind ~/Documents -type f -name 'Icon?' -print -delete;
JayRizzo

2

Para promover este esfuerzo:

Creé un script que utilizo para limpiar mi carpeta de documentos de vez en cuando, ya que estoy camino al TOC y estoy cansado de estar sobrecargado de aplicaciones y me gusta la simplicidad.

Hice esto en un esfuerzo por mejorar y proporcionar una solución alternativa.

Por último, para el archivo de iconos de @ kenche, eso no parece existir en mi Mac ya que no he modificado los iconos de mi carpeta, pero puede hacerlo en el inspector. Al arrastrar una imagen hacia la parte superior izquierda, creará el Icon^Marchivo en ese directorio.

Para encontrarlos también puedes correr:

(¿Debería ser paranoico si encuentra un falso positivo y luego usa: ctrl+ v ctrl+ en mlugar de?

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

IMPORTANTE

Por favor, como @slhck dijo anteriormente: Algunos servicios o aplicaciones pueden incluso necesitar ciertos directorios para existir. Esto también se aplica a los archivos DS_Store & Icon, TENGA EN CUENTA lo que está haciendo. También tenga en cuenta: Este script no pedirá confirmación. Eliminará todos los directorios que pueda. es decir, aquellos en los que tiene permisos para eliminar. No serán trasladados a la basura sino desaparecidos para siempre.

BASH Script

#!/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 del guión.

El script se puede ver aquí en GitHub

Referencias

Acerca de los íconos que representan archivos en tu Mac

¿Alguna forma de eliminar todas las carpetas que contienen solo .DS_Store recursivamente?

Busque carpetas y subcarpetas que solo contengan ".DS_Store"

Cómo encontrar todos los archivos de cero bytes en un directorio, incluidos los subdirectorios

¿Icono? archivo en el escritorio OS X

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.