44 votes

Comment puis-je lister uniquement les fichiers non vides en utilisant ls ?

Comment puis-je lister (en utilisant ls ) tous les fichiers qui ne sont pas vides (taille > 0) sous linux ?

63voto

Daenyth Points 6152

J'utiliserais find dirname -not -empty -ls en supposant que GNU find.

20voto

user2013 Points 2301

C'est un travail pour trouver ls n'est pas assez puissant.

find -maxdepth 1 -size +0 -print

-maxdepth 1 - ceci dit à find de chercher dans le répertoire courant seulement, enlever pour chercher dans tous les sous-répertoires ou changer le nombre pour descendre de 2, 3 ou plus de niveaux.

-size +0 ceci indique à find de rechercher les fichiers dont la taille est supérieure à 0 octets. 0 peut être modifié à la taille que vous souhaitez.

-print indique à find d'imprimer le chemin complet du fichier qu'il trouve.

Editar:
Ajout tardif : Vous devriez probablement aussi ajouter le -type f ci-dessus. Ceci indique à find de ne trouver que les fichiers. Et comme indiqué dans les commentaires ci-dessous, l'option -print L'interrupteur n'est pas vraiment nécessaire.

12voto

MaQleod Points 12844
ls -l | awk '{if ($5 != 0) print $9}'

Si vous avez l'intention d'utiliser ls vous avez besoin d'un peu d'aide awk .

9voto

Joril Points 1918

find dirname -type f ! -empty

8voto

Ls n'a pratiquement aucune option pour filtrer les fichiers : ce n'est pas son travail. Le filtrage des fichiers est le travail du Shell pour les cas simples (à travers le globbing) et le travail de find pour les cas complexes.

Dans zsh, vous pouvez utiliser l'option L pour ne conserver que les fichiers dont la taille est >0 (le qualificatif de globbing de l'UE). . restreint aux fichiers réguliers) :

ls *(.L+0)

Les utilisateurs d'autres shells doivent utiliser find. Avec GNU find (tel qu'on le trouve principalement sur Linux) :

find -maxdepth 1 -type f ! -empty -exec ls {} +

Une manière conforme à POSIX est :

find . -type f -size +0c -exec ls {} + -o -name . -o -prune

Si ls n'était pas qu'un exemple et que vous avez simplement l'intention de faire une inspection visuelle, vous pourriez trier par taille : ls -S .

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X