¿Cómo mover algunos archivos a su directorio principal?

13

Quiero extraer todos los mp3 que accidentalmente se hayan puesto en una carpeta flac, a su carpeta principal.

No debería importar cuán profundas sean las carpetas, solo quiero mover los archivos coincidentes exactamente un directorio hacia arriba.

Así es como selecciono mis archivos:

find . -path "*/flac/*" -name '*.mp3'

Esto funciona desde mi carpeta de música, pero estoy atrapado aquí. Todas las soluciones que he encontrado, mueven los archivos al padre de la carpeta actual o requieren alguna estructura fija.

Marcel
fuente

Respuestas:

24

Tratar:

find . -path "*/flac/*" -name '*.mp3' -execdir mv -t ../ {} +

Cómo funciona

  1. find .

    Inicie un comando de búsqueda que funcione en el directorio actual.

  2. -path "*/flac/*"

    Seleccione solo archivos con flacen su ruta

  3. -name '*.mp3'

    Seleccione solo archivos con extensión .mp3.

  4. -execdir mv -t ../ {} +

    Para cualquier archivo encontrado, ejecute el mvcomando desde el directorio en el que se encuentra el archivo y mueva el archivo al directorio principal.

    Además de facilitar esta tarea en particular, la opción -execdirtambién es más segura que la -execopción tradicional .

Simplificación

find . -path "*/flac/*.mp3" -execdir mv -t ../ {} +
John1024
fuente
1
¡Agradable! Hace exactamente lo que quiero.
Marcel
Es el + una alternativa para el ritualista \; ?
rackandboneman
@ Johnn1024 suponiendo que no haya directorios anidados con la misma flacruta de acceso, de lo */flac/flac/x.mp3contrario el x.mp3archivo se moverá dos niveles hacia arriba.
αғsнιη