2 votos

¿Cómo puedo cambiar el nombre de un grupo de archivos moviendo una parte del nombre a otro lugar?

Tengo un montón de archivos de la forma: "1.1 Secuencias Recursivas KEY.pdf"

Me gustaría cambiarlo por: "1.1 SECUENCIAS RECURSIVAS CLAVE.pdf"

Tengo rename instalado en mi terminal, pero no estoy seguro de cómo hacer que esto funcione.

Probé esto: rename -n '*\ *KEY*'; '$1\ KEY\ $2$3'

Pero, no funcionó, pensé que esto rompería el nombre de archivo en: $1 - todo antes del primer espacio $2 - todo entre el espacio y "KEY $ 3 - todo después de "KEY"

Luego volvería a montar en el orden correcto. Está claro que no entiendo lo que estoy haciendo. ¡Por favor, ayuda!

Nombres reales de los archivos:

0 Algebra 1 Refresh KEY.pdf
0 Algebra 1 Refresh WS.pdf
0 River Crossing Day 1 Challenge.pdf
1.1 Recursive Sequences KEY.pdf
1.1 Recursive Sequences Lesson.pdf
1.1 Recursive Sequences Student.pdf
1.2 Applications of Arithmetic Sequences KEY.pdf
1.2 Applications of Arithmetic Sequences Lesson.pdf
1.2 Applications of Arithmetic Sequences Student.pdf
1.3 Sum of an Arithmetic Sequence KEY.pdf
1.3 Sum of an Arithmetic Sequence Lesson Intro Vid.webloc
1.3 Sum of an Arithmetic Sequence Lesson Solution Vid.webloc
1.3 Sum of an Arithmetic Sequence Lesson.pdf
1.3 Sum of an Arithmetic Sequence Student.pdf
1.4 Applications of Geometric Sequences KEY.pdf
1.4 Applications of Geometric Sequences Lesson.pdf
1.4 Applications of Geometric Sequences Student.pdf
1.4b Sum of a Geometric Series KEY.pdf
1.4b Sum of a Geometric Series.docx
1.4b Sum of a Geometric Series.pdf
1.4b1 Lesson Math Medic.pdf
1.4b1 Review 1.1 to 1.4 - Algebra 2 - Math Medic.docx
1.4b1 Review 1.1 to 1.4 - Student.pdf
1.5 Linear Relationships KEY.pdf
1.5 Linear Relationships Lesson.pdf
1.5 Linear Relationships Student.pdf
1.6 Point-Slope Form of a Line KEY.pdf
1.6 Point-Slope Form of a Line Lesson.pdf
1.6 Point-Slope Form of a Line Student.pdf
1.7 Standard Form of a Linear Equation KEY.pdf
1.7 Standard Form of a Linear Equation Lesson.pdf
1.7 Standard Form of a Linear Equation Student.pdf

Básicamente, quiero llevar la última palabra a la segunda posición. Aunque 'Estudiante' se convertirá en 'WS'.

1voto

Hay muchas rename por lo que es difícil adivinar qué tipo de expresiones regulares admite la versión que ha instalado. Pero suponiendo que el nombre de archivo mencionado en la pregunta representa la estructura de todos los que desea convertir, lo siguiente debería funcionar:

for f in *.pdf; do
    t=$(sed -E 's/([^ ]*) (.*) (.*)\.(.*)/\1 \3 \2.\4/' <<< "$f")
    echo mv "$f" "$t"
done

Retire el echo una vez comprobado que funciona como se espera.


Para ello se utiliza el comando de sustitución de sed para modificar el nombre del archivo.

s/([^ ]*) (.*) (.*)\.(.*)/\1 \3 \2.\4/

La parte entre el primer conjunto de / para que coincida con el nombre existente:

  • [^ ]* coincide con todos los caracteres iniciales sin espacios (el número de capítulo en su caso)
  • El espacio coincide con el espacio
  • .* entonces coincide con todos los caracteres hasta el último carácter de espacio en el nombre
  • El espacio vuelve a coincidir con el espacio
  • .* coincide desde el último espacio hasta el .
  • El último .* coincide con el sufijo (técnicamente todo lo que va después del . )

En () se utilizan para marcar las partes coincidentes, se hace referencia a ellas a partir de la segunda parte de la orden de sustitución ( \1 \3 \2.\4 ) para reconstruir el nombre en la forma requerida.

-1voto

Anton Puntos 1

Tal vez una herramienta GUI con una interfaz gráfica de usuario podría ser de ayuda. No tengo experiencia personal con ésta, pero apareció al hacer una búsqueda: https://www.transnomino.com

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