Como posso excluir pastas vazias no Mac OS X?

Respostas:

43

Antes de tudo, observe que a exclusão de diretórios vazios geralmente não é necessária. Alguns serviços ou aplicativos podem até precisar de certos diretórios para existir. Esteja ciente do que você está fazendo.

Você pode listar pastas vazias com find, quando executadas no Terminal.app:

find . -type d -empty

Por padrão, findlista arquivos e pastas, mas aqui o -type drestringe a diretórios, e a -emptyopção mostra apenas diretórios vazios. Isso recursará todas as pastas descendentes do diretório inicial ( ou abreviado ). Para expandir isso para todo o seu sistema de arquivos, use:/Users/your-username/~

find / -type d -empty

Aqui, /significa a raiz do seu sistema de arquivos Mac OS X. Obviamente, você também pode usar qualquer outro ponto de partida, por exemplo, seu disco externo montado sob ;/Volumes/your-disk-name

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

Agora, se você deseja excluir quaisquer findsaídas, basta anexar -delete, da seguinte forma:

find . -type d -empty -delete

Nota: Isso não solicitará confirmação . Ele excluirá todos os diretórios possíveis, ou seja, aqueles onde você tem permissão para excluir. Eles não serão movidos para o lixo, mas desaparecerão para sempre. Se você deseja ser solicitado antes da remoção, altere o comando para algo como o seguinte:

find . -type d -empty -exec rm -ri '{}' \;
slhck
fonte
Isso me dá uma saída illegal option -- t typee emptyparece não ser capaz de reconhecer.
Aster
1
@AsTeR A versão do OS X findrequer um caminho, então tente novamente com find . -type d, não find -type d(o último funciona para o GNU find).
slhck
6
Enquanto isso funciona, provavelmente não localiza pastas que contêm apenas os arquivos .DS_Store ocultos, tornando-os tecnicamente não vazios, mas aparecendo vazios para o usuário. Se um usuário quiser encontrar todas as pastas que parecem vazias, as que ele abriu no Finder não serão encontradas dessa maneira porque o Finder teria adicionado um arquivo .DS_Store.
SuperTempel
Portanto, podemos precisar fazer isso em duas etapas: primeiro remova os arquivos .DS_Store (pode ser feito findda mesma maneira que acima) e, em seguida, use o comando sugerido para remover os diretórios vazios restantes.
gerlos 4/08/15
6

Eu criei um programa pequeno e gratuito que resolve isso melhor:

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

A vantagem deste programa é que ele também encontra pastas aparentemente vazias, mas que contêm o arquivo ".DS_Store" invisível.

E também permite mover os itens encontrados para a Lixeira imediatamente.

SuperTempel
fonte
Seria bom se ele pode lidar com o arquivo de ícone, bem como - superuser.com/questions/298785/icon-file-on-os-x-desktop
kenchew
@kenchew Eu acredito que você está procurando essefind ~/Documents -type f -name 'Icon?' -print -delete;
JayRizzo
2

Para promover esse esforço:

Eu criei um script que eu uso para limpar minha pasta de documentos de tempos em tempos, como estou no TOC e cansado de ficar sobrecarregado com o APP e gosto de simplicidade.

Fiz isso em um esforço para melhorar e fornecer uma solução alternativa.

Por fim, no arquivo de ícone do @ kenche, isso parece não existir no meu mac, pois eu não modifiquei os ícones das pastas, mas você pode fazê-lo no inspetor. Ao arrastar uma imagem para o canto superior esquerdo, ela criará o Icon^Marquivo nesse diretório.

Para encontrá-los também, você pode executar:

(Você deve estar paranóico se encontrar um falso positivo, use: ctrl+ v ctrl+ em mvez de?)

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

IMPORTANTE

Por favor, como @slhck afirmou acima: Alguns serviços ou aplicativos podem até precisar de certos diretórios para existir. Isso também se aplica aos arquivos DS_Store e Icon, POR FAVOR , esteja ciente do que está fazendo. Nota também: Este script não solicitará confirmação. Ele excluirá todos os diretórios que puder. ou seja, aqueles em que você tem permissão para excluir. Eles não serão movidos para o lixo, mas desaparecerão para 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;

Fim do script.

Script pode ser visto aqui no GitHub

Referências:

Sobre os ícones que representam arquivos no seu Mac

Alguma maneira de remover todas as pastas que contêm apenas .DS_Store recursivamente?

Encontre pastas e subpastas contendo apenas ".DS_Store"

Como encontrar todos os arquivos de zero byte em um diretório, incluindo subdiretórios

Ícone? arquivo na área de trabalho do OS X

JayRizzo
fonte