GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cambiar el nombre de los archivos para que tengan extensiones en minúsculas con 'renombrar'?

Actualmente estoy tratando de cambiar el nombre de un gran conjunto de archivos y he estado usando métodos bastante torpes para hacerlo, como:

rename 's:(.*).MOV:$1.mov:g' *.MOV
rename 's:(.*).JPG:$1.jpg:g' *.JPG

Lo que realmente me gustaría hacer es poder combinar todos estos comandos usando la 'y' sed operador. Evidentemente, usando este operador, puede transformar elementos a minúsculas. El problema es que necesito convertir solo las extensiones. ¿Hay alguna manera de hacer esto usando este comando? Básicamente, necesito transformar el grupo de captura en la siguiente expresión a minúsculas:^.+.(.+)$ . ¿Hay alguna forma de hacer esto? Soy un poco nuevo en este tipo de transformaciones.

Respuesta aceptada:

Ese es el rename basado en Perl encontrado en Debian, Ubuntu y derivados, a juzgar por la sintaxis. No puedes usar el tr operador porque actúa sobre toda la cadena. Pero puede hacer coincidir la extensión y ponerla en minúsculas con L .

rename 's/.[^.]*$/L$&/' *.JPG *.MOV

Aquí no es necesario, pero si la expresión regular coincide con más de la parte que desea poner en minúsculas, puede colocar la parte que debe coincidir en un grupo:

rename 's/.([^.]*)$/.L$1/' *.JPG *.MOV

Reemplazar *.JPG *.MOV por *.* para actuar en todos los archivos sin importar la extensión. En bash ≥4.3 (y también en bash 4.0–4.2, con la advertencia de que esto también atraviesa enlaces simbólicos a directorios), puede actuar fácilmente sobre archivos en subdirectorios y así sucesivamente de forma recursiva:

rename 's/.[^.]*$/L$&/' **/*.*

Para los fanáticos de zsh (el :r y :e modificadores aíslan la extensión del resto del archivo):

autoload zmv
zmv '*.(MOV|JPG)' '${f:r}.${(L)f:e}'      # these extensions, current directory
zmv '*.*' '${f:r}.${(L)f:e}'              # all extensions, current directory
zmv '**/*.*' '${f:r}.${(L)f:e}'           # all extensions, recursive directory traversal

Linux
  1. ¿Cambiar el nombre de los archivos en el directorio?

  2. Metamorphose 2:cambie el nombre por lotes de sus archivos y carpetas en Linux

  3. Haz una copia de seguridad de tus archivos con rsync

  4. Cómo convertir archivos de texto a mayúsculas o minúsculas

  5. Linux:elimine las extensiones de archivo para varios archivos

Cómo cambiar el nombre de un archivo (s) en Linux

Renombrar archivos y carpetas en cPanel

Linux cambia el nombre de los archivos a mayúsculas

¿Cómo cambiar el nombre de forma masiva de archivos con codificación no válida o reemplazar de forma masiva caracteres codificados no válidos?

¿Puedo cambiar el nombre de los archivos en un directorio con Vim?

¿Cómo cambiar el nombre de todos los archivos con caracteres especiales y espacios en un directorio?