Si j'émets la commande find comme suit:
$ find . -name *.ear
Il imprime:
./dir1/dir2/earFile1.ear
./dir1/dir2/earFile2.ear
./dir1/dir3/earFile1.ear
Ce que je veux `` imprimer '' sur la ligne de commande, c'est le nom et la taille:
./dir1/dir2/earFile1.ear 5000 KB
./dir1/dir2/earFile2.ear 5400 KB
./dir1/dir3/earFile1.ear 5400 KB
unix
command-line
find
solaris
Brian Hart
la source
la source
find . -name '*.ear' -exec ls -lh {} + \;
(extension GNU) oufind . -name '*.ear' -print0 | xargs -0 ls -lh
. Vous pouvez également ajouter-type f
si vous n'êtes intéressé que par les fichiers (ou ajouter-d
à ls si vous voulez que les répertoires eux-mêmes soient inclus sans leur contenu).-type f
ne compter que les fichiers normaux.find . -name "*.ear" -type f
pour les fichiers.-type d
fonctionne pour les répertoires.Vous devez utiliser -exec ou -printf. Printf fonctionne comme ceci:
-exec est plus puissant et vous permet d'exécuter des commandes arbitraires - vous pouvez donc utiliser une version de «ls» ou «wc» pour afficher le nom du fichier avec d'autres informations. «man find» vous montrera les arguments disponibles pour printf, qui peut faire beaucoup plus que simplement la taille du fichier.
[edit] -printf n'est pas dans le standard POSIX officiel, vérifiez donc s'il est pris en charge sur votre version. Cependant, la plupart des systèmes modernes utiliseront GNU find ou une version étendue similaire, il y a donc de bonnes chances qu'elle soit implémentée.
la source
column
commande.find . -name *.ear -printf "%p %k KB\n" | column -t
-printf
option ne fonctionne pas non plus sous OS X. Voir stackoverflow.com/questions/752818/… .une solution simple consiste à utiliser l'option -ls dans find:
Cela vous donne chaque entrée au format normal "ls -l". Ou, pour obtenir la sortie spécifique que vous semblez rechercher, ceci:
Ce qui vous donnera le nom du fichier suivi de la taille en Ko.
la source
ls
option, cela devrait être beaucoup plus haut dans la liste des réponses qu'elle ne l'est.En utilisant gnu find, je pense que c'est ce que vous voulez. Il trouve tous les fichiers réels et non les répertoires (-type f), et pour chacun imprime le nom de fichier (% p), une tabulation (\ t), la taille en kilo-octets (% k), le suffixe "Ko", puis une nouvelle ligne (\ n).
Si la commande printf ne formate pas les choses comme vous le souhaitez, 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, ces trois caractères doivent être échappés avec une barre oblique inverse.
Voici une solution simple qui les trouve et les affiche en utilisant "ls -lh", qui vous montrera la taille sous une forme lisible par l'homme (k pour kilo-octets, M pour mégaoctets):
Comme autre alternative, "wc -c" affichera le nombre de caractères (octets) dans le fichier:
la source
-name '*.ear'
dans les exemples, cela devrait être la réponse n ° 1. Il répond précisément à la question, explique le sens de la syntaxe et propose de multiples alternatives.find . -type f -printf '%k KB\t %p\n'
c'est -à- dire que l'impression de la taille du fichier en premier sera probablement une meilleure sortie en termes de formatage en raison de l'alignement.Cela vous donne uniquement la taille du fichier, au lieu de toutes les choses inutiles.
la source
wc
fonctionne juste mieux pour cela, si vous avez besoin de la taille en octets.Awk peut réparer la sortie pour donner exactement ce que l'interrogateur a demandé. Sur mon système Solaris 10, find -ls imprime la taille en Ko comme deuxième champ, donc:
Sinon, utilisez -exec ls -lh et sélectionnez le champ de taille dans la sortie. Encore une fois sur Solaris 10:
la source
Pourquoi ne pas utiliser du -a ? Par exemple
Fonctionne sur un Mac
la source
J'ai eu du mal avec cela sur Mac OS X où la commande find ne prend pas en charge
-printf
.Une solution que j'ai trouvée, qui repose certes sur le `` groupe '' pour tous les fichiers étant `` personnel '' était ...
Cela divise la sortie longue de ls en trois jetons
Et puis renvoie les jetons 2 et 3, c'est-à-dire que la sortie est le nombre d'octets, puis le nom de fichier
la source
find
est disponible via homebrew avecbrew install findutils
Cela devrait vous donner ce que vous recherchez, formatage inclus (c'est-à-dire le nom du fichier en premier et la taille après):
exemple de sortie (où j'avais l'habitude
-iname "*.php"
d'obtenir un résultat):la source
Vous pouvez essayer ceci:
Cela vous donnera la taille en octets. Mais la commande du accepte également les paramètres -k pour KB et -m pour MB. Cela vous donnera une sortie comme
la source
la source
Référence Scripter World
la source
Essayez les commandes suivantes:
GNU
stat
:BSD
stat
:cependant
stat
n'est pas standard, doncdu
ouwc
pourrait être une meilleure approche:la source
la source
Si vous avez besoin d'obtenir la taille totale, voici une proposition de script
la source