obtener los primeros caracteres del parámetro de expansión del comando de búsqueda

1

Tengo una gran colección de imágenes y me gustaría ubicarlas en carpetas que coincidan con sus primeros 3 caracteres + extensión .jpg.

Así que me gustaría agarrar el archivo 4_1_0002.png (todos los archivos que comienzan con 4_1) y colocarlo en la carpeta 4_1_.jpg . De manera similar, me gustaría agarrar el archivo 4_2_0002.png (todos los archivos que comienzan con 4_2) y colocarlo en la carpeta 4_2_.jpg .

Todos los archivos que me gustaría ordenar están ahora en una carpeta enorme. Esperaba usar un comando de búsqueda, pero no sé cómo extraer los primeros tres caracteres del parámetro de expansión {}.

find . -type f -ok echo mv {} "path/first3char.jpg" \;

    
pregunta sanjihan 01.04.2017 - 10:26

1 respuesta

3

Suponiendo que todos sus archivos están en el mismo directorio y que los nombres de los archivos son razonablemente sensatos, algo así como

 find . -maxdepth 1 -type f -name '*png' |
     while read line; do
         echo mv "$line" "path/${line:2:3}.jpg/"
     done

Ejecute primero el comando como está escrito (incluido el echo ) para verificar si el resultado tiene sentido. Luego elimine el echo y vuelva a ejecutar.

    
respondido por el nohillside 01.04.2017 - 13:22

Lea otras preguntas en las etiquetas