Comment puis-je obtenir la commande rechercher pour afficher la taille du fichier avec le nom de fichier?
Si je la commande rechercher comme suit:
$ find . -name *.ear
Il imprime:
./dir1/dir2/earFile1.ear
./dir1/dir2/earFile2.ear
./dir1/dir3/earFile1.ear
Ce que je veux "imprimer" à la ligne de commande est le nom et la taille:
./dir1/dir2/earFile1.ear 5000 KB
./dir1/dir2/earFile2.ear 5400 KB
./dir1/dir3/earFile1.ear 5400 KB
Vous devez vous connecter pour publier un commentaire.
juste le h supplémentaire de jer.drab.org's réponse. permet de gagner du temps la conversion de MO mentalement 😉
find . -name '*.ear' -exec ls -lh {} + \;
(extension GNU) oufind . -name '*.ear' -print0 | xargs -0 ls -lh
. Aussi, vous pouvez, comme pour ajouter-type f
si vous êtes seulement intéressés dans les fichiers (ou ajouter-d
à ls si vous voulez répertoires eux-mêmes inclus, sans que leur contenu).-type f
à ne compter que les fichiers réguliers.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 permet d'exécuter des commandes arbitraires - de sorte que vous pouvez utiliser une version de " ls " ou " wc "pour imprimer le nom de fichier avec d'autres informations. "l'homme trouvez' vous montrera les arguments disponibles pour printf, qui peut faire beaucoup plus que juste de la taille du fichier.
[edit] -printf n'est pas dans l'officiel de la norme POSIX, afin de vérifier si elle est prise en charge par votre version. Cependant, la plupart des systèmes modernes utilise GNU trouver ou la même version élargie, donc il ya une bonne chance qu'il sera mis en œuvre.
column
de commande.find . -name *.ear -printf "%p %k KB\n" | column -t
-printf
option ne fonctionne pas sous OS X soit. Voir stackoverflow.com/questions/752818/....une solution simple est d'utiliser l'option-ls en trouver:
Qui vous donne chaque entrée dans la normale "ls-l" format. Ou, pour obtenir de la puissance que vous semblez chercher, c':
Qui vous donnera le nom de fichier suivi de la taille en KO.
De l'utilisation de gnu trouver, 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 imprime le nom du fichier (%p), une tabulation (\t), la taille en kilo-octets (%k), le suffixe "KO", puis un saut de ligne (\n).
Si le printf commande ne formate pas les choses de la façon dont vous le souhaitez, vous pouvez utiliser exec, suivi par la commande que vous souhaitez exécuter sur chaque fichier. Utilisation de {} pour le nom de fichier, et de mettre fin à la commande avec un point-virgule (;). Sur la plupart des coquillages, tous les trois de ces caractères doivent être échappés avec une barre oblique inverse.
Voici une solution simple qui recherche et imprime à l'aide de "ls -lh", qui va vous montrer la taille en forme lisible par l'homme (k pour kilo-octets, M pour méga-octets):
Encore une autre alternative, "wc -c" affichera le nombre de caractères (octets) dans le fichier:
-name '*.ear'
dans les exemples, ce devrait être le #1 réponse. Il répond à la question précisément, explique le sens de la syntaxe, et vous offre plusieurs solutions de rechange.find . -type f -printf '%k KB\t %p\n'
c'est à dire, l'impression du fichier la taille de la première, sera probablement un meilleur rendement en termes de mise en forme en raison de l'alignement.Cela vous donne la taille seulement, au lieu de tous les trucs inutiles.
wc
œuvres pour cela il suffit de mieux, si vous avez besoin de la taille en octets.Awk peut fixer la sortie pour donner à tout ce que l'interlocuteur le demande. Sur mon système Solaris 10, trouver -ls imprime taille (en KO) que le deuxième champ, donc:
Sinon, utilisez -exec ls -lh et de choisir la taille de champ à partir de la sortie.
De nouveau sur Solaris 10:
Pourquoi ne pas utiliser du-un ? E. g.
Fonctionne sur un Mac
J'ai du mal avec ce sur Mac OS X, où la trouver commande ne prend pas en charge
-printf
.Une solution que j'ai trouvé, qui, certes, s'appuie sur le "groupe" pour tous les fichiers "personnel" a été...
Ce divise le ls longue sortie en trois jetons
Et puis les sorties de jetons 2 et 3, c'est à dire la sortie est le nombre d'octets et ensuite le nom de fichier
find
est disponible via homebrew avecbrew install findutils
Cela devrait vous obtenez ce que vous recherchez, formatage (c'est à dire de nom de fichier de la première et de la taille par la suite):
exemple de sortie (où j'ai utilisé
-iname "*.php"
pour obtenir un certain résultat):Vous pouvez essayer ceci:
Cela va vous donner la taille en octets. Mais le du commande accepte également les paramètres -k pour KB et -m pour MB. Il vous donnera une sortie comme
Scripter référence Mondiale
Essayez les commandes suivantes:
GNU
stat
:BSD
stat
:cependant
stat
n'est pas standard, doncdu
ouwc
pourrait être une meilleure approche: