Comment puis-je lister (en utilisant ls
) tous les fichiers qui ne sont pas vides (taille > 0) sous linux ?
Réponses
Trop de publicités?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.
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
.
- Réponses précédentes
- Plus de réponses