Si publico el comando de búsqueda de la siguiente manera:
$ find . -name *.ear
Imprime:
./dir1/dir2/earFile1.ear
./dir1/dir2/earFile2.ear
./dir1/dir3/earFile1.ear
Lo que quiero 'imprimir' en la línea de comando es el nombre y el tamaño:
./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
fuente
fuente
find . -name '*.ear' -exec ls -lh {} + \;
(extensión GNU) ofind . -name '*.ear' -print0 | xargs -0 ls -lh
. También es posible que desee agregar-type f
si solo está interesado en archivos (o agregar-d
a ls si desea que los directorios se incluyan sin su contenido).-type f
solo contar archivos regulares.find . -name "*.ear" -type f
para archivos.-type d
funciona para directorios.Necesita utilizar -exec o -printf. Printf funciona así:
-exec es más poderoso y le permite ejecutar comandos arbitrarios, por lo que podría usar una versión de 'ls' o 'wc' para imprimir el nombre del archivo junto con otra información. 'man find' le mostrará los argumentos disponibles para printf, que pueden hacer mucho más que solo.
[editar] -printf no está en el estándar POSIX oficial, así que verifique si es compatible con su versión. Sin embargo, la mayoría de los sistemas modernos usarán GNU find o una versión similar extendida, por lo que es muy probable que se implemente.
fuente
column
comando.find . -name *.ear -printf "%p %k KB\n" | column -t
-printf
opción tampoco funciona en OS X. Consulte stackoverflow.com/questions/752818/… .una solución simple es usar la opción -ls en find:
Eso le da cada entrada en el formato normal "ls -l". O, para obtener la salida específica que parece estar buscando, esto:
Lo que le dará el nombre del archivo seguido del tamaño en KB.
fuente
ls
opción, esto debería estar mucho más arriba en la lista de respuestas de lo que es.Usando gnu find, creo que esto es lo que quieres. Encuentra todos los archivos reales y no directorios (-tipo f), y para cada uno imprime el nombre del archivo (% p), una pestaña (\ t), el tamaño en kilobytes (% k), el sufijo "KB" y luego una nueva línea (\ n).
Si el comando printf no formatea las cosas de la manera que desea, puede usar exec, seguido del comando que desea ejecutar en cada archivo. Use {} para el nombre del archivo y termine el comando con un punto y coma (;). En la mayoría de los proyectiles, los tres personajes deben escaparse con una barra invertida.
Aquí hay una solución simple que los encuentra e imprime usando "ls -lh", que le mostrará el tamaño en forma legible por humanos (k para kilobytes, M para megabytes):
Como otra alternativa más, "wc -c" imprimirá el número de caracteres (bytes) en el archivo:
fuente
-name '*.ear'
en los ejemplos, esta debería ser la respuesta n. ° 1. Responde a la pregunta con precisión, explica el significado de la sintaxis y ofrece múltiples alternativas.find . -type f -printf '%k KB\t %p\n'
es decir, imprimir primero el tamaño del archivo, probablemente será un resultado más agradable en términos de formato debido a la alineación.Esto le brinda lo único, en lugar de todas las cosas innecesarias.
fuente
wc
funciona para esto simplemente mejor, si necesita el tamaño en bytes.Awk puede arreglar la salida para dar exactamente lo que pidió el interlocutor. En mi sistema Solaris 10, busque -ls imprime el tamaño en KB como segundo campo, así:
De lo contrario, use -exec ls -lh y seleccione el campo de tamaño de la salida. De nuevo en Solaris 10:
fuente
¿Por qué no usar du -a ? P.ej
Funciona en Mac
fuente
Luché con esto en Mac OS X donde el comando de búsqueda no es compatible
-printf
.Una solución que encontré, que ciertamente se basa en el 'grupo' para que todos los archivos sean 'personal' fue ...
Esto divide la salida larga de ls en tres tokens
Y luego genera los tokens 2 y 3, es decir, la salida es el número de bytes y luego el nombre del archivo
fuente
find
está disponible a través de homebrew conbrew install findutils
Esto debería proporcionarle lo que está buscando, incluido el formato (es decir, el nombre del archivo primero y el tamaño después):
salida de muestra (donde solía
-iname "*.php"
obtener algún resultado):fuente
Puedes probar esto:
Esto le dará el tamaño en bytes. Pero el comando du también acepta los parámetros -k para KB y -m para MB. Te dará una salida como
fuente
fuente
Referencia mundial de Scripter
fuente
Pruebe los siguientes comandos:
GNU
stat
:BSD
stat
:Sin embargo
stat
, no es estándar, por lo quedu
owc
podría ser un mejor enfoque:fuente
fuente
Si necesita obtener el tamaño total, aquí hay una propuesta de guión
fuente