6 votos

Anteponer los nombres de carpeta nombre de archivo y aplanar la estructura del archivo

Tengo un montón de carpetas con nombres diferentes, por ejemplo

2013-02   Snow and birds
    PICT0001.jpg
    PICT0002.jpg
2013-06   Bicycle trip
    edited_panorama.jpg
    From phone
        DCIM0001.jpg
        DCIM0002.jpg
        DCIM0003.jpg
    From camera
        DSLR
            PICT0001.raw
            PICT0002.raw
        Compact
            S0000001.jpg           

Como se puede ver, la estructura general es una variable de nivel de subcarpetas anidadas que contienen imágenes. Lo que quiero hacer es aplanar la estructura, añadiendo el nombre de cada nivel de subcarpetas para el nombre de archivo, similar a este:

2013-02   Snow and birds_PICT0001.jpg
2013-02   Snow and birds_PICT0002.jpg
2013-06   Bicycle trip_edited_panorama.jpg
2013-06   Bicycle trip_From phone_DCIM0001.jpg
2013-06   Bicycle trip_From phone_DCIM0002.jpg
2013-06   Bicycle trip_From phone_DCIM0003.jpg
2013-06   Bicycle trip_From camera_DSLR_PICT0001.raw
2013-06   Bicycle trip_From camera_DSLR_PICT0002.raw
2013-06   Bicycle trip_From camera_Compact_S0000001.jpg

Cómo se consigue esto mediante el uso de un Terminal de comandos o cualquier otro tipo de secuencia de comandos? He encontrado algunas soluciones similares, pero todos ellos parecen depender de un nivel fijo de subcarpetas, mientras que mi estructura de carpetas diferentes.

8voto

Complicado, sobre todo si quieres mantener todos los espacios, etc. Ejecute lo siguiente en el directorio principal (la que contiene 2013-02 Snow and birds etc):

find . -type f -exec sh -c 'for f do x=${f#./}; echo mv "$x" "${x////_}"; done' {} +

La asignación a x se deshace de los principales ./ de find, ${x////_} sustituye a todos los (restantes) apariciones de / con _.

También, he protegido el real mv con un echo así que usted puede comprobar en primer lugar si los comandos buscar aceptar.

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