2010-05-26 4 views

Répondre

11

Votre recherche a-t-elle un prédicat -empty?

Vous devriez pouvoir utiliser find . -type d -empty

1

Si vous êtes un utilisateur zsh, vous pouvez toujours le faire. Si vous n'êtes pas, peut-être cela vous convaincre:

echo **/*(/^F) 

**/* se développer à chaque nœud enfant du répertoire de travail actuel et le () est un qualificatif glob. / limite les correspondances aux répertoires et F limite les correspondances aux correspondances non vides. Négatif avec ^ nous donne tous les répertoires vides. Voir la page de manuel zshexpn pour plus de détails.

1

Vous pouvez également utiliser:

find . -type d -links 2 

. et .. les deux comptent comme un lien, tout comme les fichiers.

0

La réponse de Pimin Konstantin Kefalou imprime des dossiers avec seulement 2 liens et d'autres fichiers (d, f, ...).

La meilleure façon que je l'ai trouvé est:

for directory in $(find . -type d); do 
    if [ -n "$(find $directory -maxdepth 1 -type f)" ]; then echo "$directory" 
    fi 
done 

Si vous avez le nom avec des espaces utilisez des guillemets dans « répertoire $ ».

Vous pouvez remplacer. par votre dossier de référence.

Je n'ai pas été capable de le faire avec une instruction find.

Questions connexes