6 votos

¿Cómo puedo iterar a través de una carpeta y mover/copiar cada elemento n de N

Quiero hacer un time lapse de una carpeta de imágenes, pero hay demasiados y el lapso de tiempo que avanza lentamente. ¿Cómo puedo seleccionar, por ejemplo, una de cada 10 elemento, y copiar o mover los elementos en una carpeta separada?

5voto

Goldorak84 Puntos 116

La manera más rápida es usar bash y awk de sintaxis en su Terminal.aplicación

for file in `find /SOURCE/DIR -type f | awk 'NR %10 == 0'`; do echo mv $file /DEST/DIR ; done

for declaración introduce la bash loop, para iterar a través de un conjunto de datos donde file es la variable.

find analiza la /SOURCE/DIR para que se especifica.

| actúa como un tubo, pasando stout de find de vuelta a stdin

awk interpreta stdin y se imprime sólo las líneas que cumplan las condiciones especificadas por 'NR %10 == 0'

  • NR es awk built-in variable que especifica el registro/número de línea para ser evaluados.

  • % es numerical operator de decirle a awk que el carácter siguiente(s) deben ser tratadas como tales.

  • == es el operador relacional para must be equal to..

  • 0 es la expresión binaria de TRUE

Bueno, eso es todo de lujo para "encontrar una de cada 10 archivo que existe en este directorio y salida;

  • do introduce la acción a realizar en la salida.
  • echo se utiliza para corroborar el comando, los resultados de lo que va a ser impreso en la stout. Si todo se ve bien, eliminar y realizar la acción (mv, cp)
  • mv está integrado en el comando de bash para tomar un archivo y mover(o cambiarle el nombre).
  • cp es otro construido en el comando de bash para mv un archivo de un directorio. a otro conservando el original. Usted puede directamente sustituto cp para mv si desea conservar el contenido del directorio original.
  • $file hace referencia a la file variable que ya ha sido definido.

Así que, eso es todo lujo de decirme qué pasa cuando voy a...(echo) "move (o, copy) de todos los archivos especificados por los parámetros anteriores a este otro directorio;"

  • done

Eso es todo lujo de decirle a bash para terminar el bucle, ya que está hecho :)

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X