Cambiar el nombre de archivos por lotes en Linux

Cambiar el nombre de archivos por lotes en Linux

¿Cómo puedo cambiar el nombre de las imágenes con el comando 'renombrar' de "algo_full.jpg" a "algo_500.jpg" recursivo?

Respuesta1

Básicamente, puedes usar la renameherramienta para eso. Debería venir en una versión basada en Perl con distribuciones de Linux basadas en Debian, pero puedes fácilmenteDescargalodesde la fuente también (obviamente, primero debes hacerlo ejecutable con chmod +x).


El siguiente comando reemplazará la _fullparte con _500todos los archivos JPG en el directorio actual.

rename 's/_full/_500/' *.jpg

Para hacer esto de forma recursiva, comenzando desde su directorio actual, use renamecon find.

find . -type f -iname "*.jpg" -exec rename 's/_full/_500/' {} \;

Nota:Es posible que desee probar el comando antes de ejecutarlo. Para hacer eso, agregue la -nopción a rename(por ejemplo, entre renamey la 's//'cadena).

Respuesta2

Quizás quieras investigarzmv. zmv es una característica específica de zsh y requiere autoload -U zmvestar en algún lugar de su .zshrcarchivo.

EDITAR: Como ejemplo, la tarea que planteó el OP podría resolverse con

noglob zmv '(*)_full.(*)' '$1_500.$2'

Un extracto de la zshcontribpágina de manual:

zmv [ -finqQsvwW ] [ -C | -L | -M | -p program ] [ -o optstring ] srcpat dest

Mueva (generalmente, cambie el nombre) archivos que coincidan con el patrón srcpat a archivos correspondientes que tengan nombres de la forma dada por dest, donde srcpat contiene paréntesis que rodean los patrones que serán reemplazados a su vez por $1, $2, ... en dest. Por ejemplo,

zmv '(*).lis' '$1.txt'

cambia el nombre foo.lisa foo.txt, my.old.stuff.lisa my.old.stuff.txt, etc.

El patrón siempre se trata como un patrón EXTENDED_GLOB. Cualquier archivo cuyo nombre no cambie mediante la sustitución simplemente se ignora. Cualquier error (una sustitución dio como resultado una cadena vacía, dos sustituciones dieron el mismo resultado, el destino era un archivo normal existente y no se proporcionó -f) hace que toda la función se cancele sin hacer nada.

Los patrones EXTENDED_GLOB son tremendamente poderosos.Aquíes una buena introducción al concepto.

información relacionada