3 votos

Mover un archivo con una extensión específica de una jerarquía de directorios a un destino

Tengo una jerarquía de directorios que contiene muchas imágenes con .jpg y hay varias carpetas que contienen estas imágenes. Hay muchas .json en estas carpetas.

¿Existe una forma de escanear todas estas subcarpetas y mover el .jpg archivos a un destino/carpeta específico?

2voto

Nimesh Neema Puntos 69

Si busca una solución de línea de comandos, utilice lo siguiente:

find /source_root_directory_path -name '*.jpg' -exec mv {} /target_directory_path \;

0 votos

Gracias, me aseguraré de comprobarlo también.

0 votos

Veo dos problemas con su find comando . La primera está bien si uno no quiere .JPG así como .jpg archivos movidos, -name '*.jpg' debe ser -iname '*.jpg' para obtener todos los archivos JPEG (si es lo que realmente se quiere). Su mv comando sobrescribirá cualquier archivo con el mismo nombre que se encuentre en el estructura del directorio de origen al moverlo a la directorio de destino . Dicho esto, su -exec comando está mejor formado que el mío :)

0 votos

@usuario3439894 Muchas gracias por apuntar y hacerme aprender algo nuevo. Consultaré los manuales correspondientes y modificaré el comando para manejar los casos adecuadamente.

2voto

Bill Smith Puntos 11

Cree y abra su carpeta de destino.

Vaya al directorio base que desea escanear en Finder. En el campo de búsqueda, introduzca kind:jpg. Seleccione la imagen JPEG cuando aparezca.

Después de generar una lista de todas las imágenes JPEG, puedes seleccionarlas todas con Comando-A y arrastrarlas a una carpeta. Si mantienes pulsado ALT cuando las sueltas en la carpeta, obtendrás una copia en lugar de un movimiento.

1 votos

Esta es una idea mucho más agradable que tener que usar la línea de comandos para ello. Gracias.

2 votos

Me imaginé que había una razón por la que estás preguntando en el intercambio de "Mac" en lugar del intercambio de Unix/Linux.Puedo sed y awk con el mejor de ellos, pero compro Macs porque no QUIERO recordar expresiones regulares crípticas y comandos.

2voto

user3439894 Puntos 5883

En Terminal , lo siguiente bash comando compuesto moverá todo lo encontrado .jpg archivos en el "/path/to/source" directorio a la "/path/to/destination/" directorio pero no sobrescribirá las existentes archivos en el "/path/to/destination/" directorio .

find "/path/to/source" -iname '*.jpg' -exec sh -c 'for f in "$@"; do mv -n "$f" "/path/to/destination/"; done' sh {} +

Después de ejecutar lo anterior bash comando compuesto , ejecute lo siguiente bash comando compuesto para ver lo que queda en el "/ruta/al/fuente"`. directorio .

find "/path/to/source" -iname '*.jpg'

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