Come posso eliminare le cartelle vuote in Mac OS X?


Risposte:


43

Prima di tutto nota che l'eliminazione di directory vuote di solito non è necessaria. Alcuni servizi o applicazioni potrebbero anche aver bisogno di esistere determinate directory. Sii consapevole di ciò che stai facendo.

Puoi elencare le cartelle vuote con find, quando eseguito da Terminal.app:

find . -type d -empty

Per impostazione predefinita findelenca file e cartelle, ma qui -type dlo limita alle directory e l' -emptyopzione mostra solo directory vuote. Questo richiamerà tutte le cartelle che scendono dalla tua home directory ( o breve, ). Per espanderlo a tutto il tuo filesystem, usa:/Users/your-username/~

find / -type d -empty

Qui, /indica la radice del file system di Mac OS X. Ovviamente puoi anche usare qualsiasi altro punto di partenza, ad esempio il tuo disco esterno montato sotto ;/Volumes/your-disk-name

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

Ora, se vuoi eliminare qualunque findoutput, aggiungi semplicemente -delete, in questo modo:

find . -type d -empty -delete

Nota: questo non richiederà conferma . Eliminerà tutte le directory che può, vale a dire quelle in cui si dispone delle autorizzazioni per eliminare. Non saranno spostati nella spazzatura ma se ne andranno per sempre. Se si desidera che venga richiesto prima della rimozione, modificare il comando in qualcosa di simile al seguente:

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

Mi dà l'output illegal option -- t typee emptysembra non essere in grado di riconoscere.
AsTeR

1
@AsTeR La versione OS X di findrichiede un percorso, quindi riprovare con find . -type d, non find -type d(quest'ultimo funziona per GNU find).
slhck

6
Mentre funziona, probabilmente non individua le cartelle che contengono solo i file nascosti .DS_Store, rendendoli tecnicamente non vuoti ma apparentemente vuoti per l'utente. Se un utente desidera trovare tutte le cartelle che appaiono vuote, quelle che una volta aveva aperto nel Finder non verranno trovate in questo modo perché il Finder avrebbe aggiunto un file .DS_Store.
SuperTempel

Quindi potremmo aver bisogno di farlo in due passaggi: prima rimuovi i file .DS_Store (può essere fatto usando findin un modo simile come sopra), quindi usa il comando suggerito per rimuovere le directory vuote rimanenti.
Gerlos,

6

Ho realizzato un programma piccolo e gratuito che risolve meglio questo:

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

Il vantaggio di questo programma è che trova anche cartelle apparentemente vuote ma che contengono il file ".DS_Store" invisibile.

E ti consente anche di spostare subito gli elementi trovati nel Cestino.


Sarebbe bello se fosse in grado di gestire anche il file Icon - superuser.com/questions/298785/icon-file-on-os-x-desktop
kenchew

@kenchew Credo che tu stia cercando questofind ~/Documents -type f -name 'Icon?' -print -delete;
JayRizzo,

2

Per favorire questo sforzo:

Ho creato uno script che utilizzo di tanto in tanto per ripulire la cartella dei miei documenti, dato che sono un tipo di disturbo ossessivo compulsivo e sono stanco di essere sovraccarico di APP e di semplicità.

L'ho fatto nel tentativo di migliorare e fornire una soluzione alternativa.

Infine, per il file icona di @ kenche, questo non sembra esistere sul mio mac in quanto non ho modificato le icone della mia cartella, ma puoi farlo in Impostazioni. Quando si trascina un'immagine in alto a sinistra, verrà creato il Icon^Mfile in quella directory.

Per trovare anche quelli puoi eseguire:

(Dovresti essere paranoico se trovi un falso positivo quindi usa: ctrl+ v ctrl+ minvece di?)

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

IMPORTANTE

Per favore, come affermato in precedenza da @slhck: alcuni servizi o applicazioni potrebbero anche aver bisogno di esistere determinate directory. Questo vale anche per i file DS_Store & Icon, PER FAVORE Siate consapevoli di ciò che state facendo. Nota anche: questo script non chiederà conferma. Eliminerà tutte le directory che può. cioè quelli in cui hai i permessi per cancellare. Non saranno spostati nella spazzatura ma se ne andranno per sempre.

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;

Fine della sceneggiatura.

Lo script può essere visto qui su GitHub

Riferimenti:

Informazioni sulle icone che rappresentano i file sul tuo Mac

Un modo per rimuovere tutte le cartelle che contengono solo .DS_Store in modo ricorsivo?

Trova cartelle e sottocartelle contenenti solo ".DS_Store"

Come trovare tutti i file a zero byte in una directory comprese le sottodirectory

Icona? file sul desktop OS X.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.