En utilisant gnu find, je pense que c'est ce que vous voulez. Il trouve tous les fichiers réels et pas les répertoires (-type f), et pour chacun d'eux affiche le nom de fichier (% p), un onglet (\ t), la taille en kilo-octets (% k), le suffixe "KB", une nouvelle ligne (\ n).
find . -type f -printf '%p\t%k KB\n'
Si la commande printf ne formate pas les choses comme vous voulez, vous pouvez utiliser exec, suivi de la commande que vous souhaitez exécuter sur chaque fichier. Utilisez {} pour le nom de fichier et terminez la commande par un point-virgule (;). Sur la plupart des shells, tous les trois de ces caractères devraient être échappés avec une barre oblique inverse.
Voici une solution simple qui trouve et les imprime en utilisant « ls -lh », qui vous montrera la taille sous forme lisible par l'homme (k pour kilo-octets, M pour méga-octets):
find . -type f -exec ls -lh \{\} \;
Comme encore une autre alternative, « wc -c » imprimera le nombre de caractères (octets) dans le fichier:
find . -type f -exec wc -c \{\} \;
Cette version va executer le processus "ls" pour chaque fichier. Si vous avez beaucoup de fichiers (disons plus d'un millier), vous devriez optimiser cela soit: 'trouver. -name '* .ear' exec ls -lh {} + \; '(extension GNU) ou ' trouver. -name '* .ear' -print0 | xargs -0 ls -lh'. Aussi, vous pouvez ajouter '-type f' si vous êtes seulement intéressé par les fichiers (ou ajouter' -d' à ls si vous voulez que les répertoires eux-mêmes soient inclus sans leur contenu). – ash108
Votre réponse n'exclut pas les répertoires, de sorte que vous finira en cours d'exécution sur les répertoires ls aussi bien, ce qui est manifestement pas la bonne chose à faire. –
C'est une manière vraiment inefficace de faire les choses - et malheureusement les commentaires de ash108 ne sont pas non plus idéaux. Il est préférable d'utiliser l'option -printf pour trouver. – oskarpearson