Probablement parce que le demandeur a demandé lset que vous avez utilisé find;) J'ai augmenté cependant ... C'est une bonne solution
BloodPhilia
2
Si vous utilisez "find. -Not -empty -ls", il inclura également le répertoire courant (c'est-à-dire "." Dans sa sortie), pour simplement inclure les fichiers actuels, utilisez "find. -Type f -not -empty -ls"
user672009
19
C'est un travail pour trouver que ls n'est pas assez puissant.
find -maxdepth 1-size +0-print
-maxdepth 1 - cela indique à find de rechercher le répertoire actuel uniquement, de supprimer pour rechercher dans tous les sous-répertoires ou de changer le nombre pour descendre de 2, 3 niveaux ou plus.
-size +0cela indique à find de rechercher des fichiers dont la taille est supérieure à 0octets. 0peut être changé en n'importe quelle taille que vous souhaitez.
-print indique à find d'imprimer le chemin complet du fichier qu'il trouve
Edit:
ajout tardif: vous devriez probablement également ajouter le -type fcommutateur ci-dessus. Cela indique à find de ne rechercher que les fichiers. Et comme indiqué dans les commentaires ci-dessous, le -printcommutateur n'est pas vraiment nécessaire.
Pour éviter un avertissement, vous devez placer -maxdepth 1avant -size +0. Est également -printl'action par défaut, donc elle n'est pas nécessaire.
cYrus
@cYrus - Aucun avertissement pour moi (cygwin)
Nifle
Les implémentations de findvarient considérablement en termes de ce que sont les options valides et où elles peuvent aller. GNU find(qui est terriblement commun) va produire un avertissement si vous mettez -sizeavant -maxdepth.
Ls n'a presque 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 (par globbing) et le travail de recherche pour les cas complexes.
Dans zsh, vous pouvez le Lqualificatif globbing pour conserver uniquement les fichiers dont la taille est> 0 (le .qualificatif se limite aux fichiers normaux):
ls *(.L+0)
Les utilisateurs d'autres shells doivent utiliser find. Avec GNU find (comme 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était non seulement un exemple et vous simplement l' intention inspection visuelle, vous pourriez trier par taille: ls -S.
ls
et que vous avez utiliséfind
;) J'ai augmenté cependant ... C'est une bonne solutionC'est un travail pour trouver que ls n'est pas assez puissant.
-maxdepth 1
- cela indique à find de rechercher le répertoire actuel uniquement, de supprimer pour rechercher dans tous les sous-répertoires ou de changer le nombre pour descendre de 2, 3 niveaux ou plus.-size +0
cela indique à find de rechercher des fichiers dont la taille est supérieure à0
octets.0
peut être changé en n'importe quelle taille que vous souhaitez.-print
indique à find d'imprimer le chemin complet du fichier qu'il trouveEdit:
ajout tardif: vous devriez probablement également ajouter le
-type f
commutateur ci-dessus. Cela indique à find de ne rechercher que les fichiers. Et comme indiqué dans les commentaires ci-dessous, le-print
commutateur n'est pas vraiment nécessaire.la source
-maxdepth 1
avant-size +0
. Est également-print
l'action par défaut, donc elle n'est pas nécessaire.find
varient considérablement en termes de ce que sont les options valides et où elles peuvent aller. GNUfind
(qui est terriblement commun) va produire un avertissement si vous mettez-size
avant-maxdepth
.find dirname -type f ! -empty
la source
Si vous avez l'intention d'utiliser
ls
, vous avez besoin d'un peu d'aideawk
.la source
Ls n'a presque 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 (par globbing) et le travail de recherche pour les cas complexes.
Dans zsh, vous pouvez le
L
qualificatif globbing pour conserver uniquement les fichiers dont la taille est> 0 (le.
qualificatif se limite aux fichiers normaux):Les utilisateurs d'autres shells doivent utiliser find. Avec GNU find (comme on le trouve principalement sur Linux):
Une manière conforme POSIX est:
Si
ls
était non seulement un exemple et vous simplement l' intention inspection visuelle, vous pourriez trier par taille:ls -S
.la source
fonctionnera mieux si vous voulez tous les fichiers non vides, plutôt que seulement les répertoires.
la source
Bash 4.0+
la source