samedi 26 mai 2012

La búsqueda de imágenes PNG más grande que la x píxeles a través del shell de Linux

Cuando usted está tratando de trabajar para cambiar el diseño de su sitio web, usted tiene que preocuparse por el ancho de las imágenes en el contenido del artículo. Tengo imágenes notablemente grande en la mayoría de los artículos que he escrito, así que si desea aumentar la barra lateral es de suma importancia para determinar qué imágenes van a ser demasiado grande para caber en el nuevo diseño.

Como yo soy un programador, que sería fácil para mí escribir una pequeña aplicación para hacer esto, pero me hizo empezar a pensar ... ¿Por qué no puedo hacer esto en la línea de comandos de Linux?

Lo primero que me di cuenta fue que las imágenes PNG mostrar el tamaño de los datos cuando se ejecuta el "archivo" de comandos en ellos:

$ Image3.png archivo
image3.png: los datos de imagen PNG, 613 x 657, 8-bit/color RGBA, no entrelazado

Muy útil ya que el 99% de la imagen en este sitio están en formato PNG. Así que ahora a tirar en un bucle para todos los archivos en mi directorio de carga:

$ For f in *. png; hacer archivo $ f; hacer

image.png: los datos de imagen PNG, 631 x 185, 8-bit/color RGBA, no entrelazado
image1.png: los datos de imagen PNG, 631 x 96, 8-bit/color RGBA, no entrelazado
image10.png: los datos de imagen PNG, 375 x 395, 8-bit/color RGBA, no entrelazado
image11.png: los datos de imagen PNG, 484 x 241, 8-bit/color RGBA, no entrelazado
-snipped-

Esto es más útil, pero que tendría que colocar los datos en Excel o una aplicación similar con el fin de ordenar los datos, así que decidí usar el linux "corte" de comando para sacar sólo el ancho de columna.

Usted notará que la f5-parámetro le dice a corte para tomar la quinta columna, y el d con un espacio después de que se le dice a corte a utilizar un espacio como delimitador. El carácter de barra es un carácter de escape para decirle al shell para utilizar el espacio como un personaje, y no como espacios en blanco.

$ For f in *. png; hacer archivo $ f | cut-f5-d ; hacer

631
631
375
484
-snipped-

Salida no del todo útil, ¿verdad? Vamos a impulsar que a través de un golpe si la declaración, a continuación, sólo muestra la salida del comando de archivo cuando la anchura es mayor de 600 píxeles.

Aviso de la `(acento grave) las marcas de los" archivo $ f | corte ... " sección, que indican que los comandos en el interior del `será procesado como una sola salida y se introduce en la sentencia if, donde se utiliza una-gt (mayor que). También tenga en cuenta que usted necesita espacios alrededor de cada lado de los corchetes []

for f in *. png; hacer si [`fichero $ f | cut-f5-d `-gt 600], y luego el archivo $ f; fi; hacer

image.png: los datos de imagen PNG, 631 x 185, 8-bit/color RGBA, no entrelazado
image1.png: los datos de imagen PNG, 631 x 96, 8-bit/color RGBA, no entrelazado
image17.png: los datos de imagen PNG, 638 x 340, 8-bit/color RGBA, no entrelazado
image18.png: los datos de imagen PNG, 608 x 448, 8-bit/color RGBA, no entrelazado
-snipped-

Ahora tenemos una lista de todos los archivos de más de 600 píxeles de ancho. Usted puede ajustar el "archivo $ f" al final de eco sólo por los nombres de archivo si es necesario para copiar o mover a otra parte:

for f in *. png; hacer si [`fichero $ f | cut-f5-d `-gt 600]; then echo $ f; fi; hacer

image.png
image1.png
image17.png
image18.png
-snipped-

El shell de Linux es increíblemente poderosa! Esta solución no es muy práctico para todo el mundo, pero es bueno saber cómo trabajar con la shell para que pueda hacer este tipo de tareas cuando sea necesario.

1 commentaire:

  1. El shell de Linux es increíblemente poderosa! Esta solución no es muy práctico para todo el mundo, pero es bueno saber cómo trabajar con la shell para que pueda hacer este tipo de tareas cuando sea necesario. coaching-mastery.com/mejores-agendas-para-pc/

    RépondreSupprimer