2011-03-22 11 views
54

Tengo un conjunto de archivos, todos ellos nnn.MP4.mov ¿cómo podría cambiarles el nombre para que solo sea nnn.mov?¿cómo puedo cambiar el nombre de los archivos usando la Terminal?

+1

Instalar muCommander. Tiene el renamer del lote del estilo de Total Commander. ¿Por qué perder el tiempo en esa porquería de 100 caracteres del comando por lotes alucinante? – Nakilon

+0

@Nakilon porque el aprendizaje de la línea de comandos tiene mayor retorno de la inversión –

Respuesta

81

En primer lugar, hacer un ensayo (no realmente cambiar el nombre de los archivos) con lo siguiente:

for file in *.mov 
do 
    echo mv "$file" "${file/MP4./}" 
done 

Si todo parece correcto, elimine echo de la tercera línea para cambiar el nombre de los archivos.

+18

No pude entender por qué esto no funcionaba ... había salida y parecía que sí, pero en realidad no estaba haciendo nada. Bueno, finalmente me di cuenta de que necesita eliminar la declaración de ECHO para lograr que haga algo (en OSX 10.7 de todos modos). Entonces, si mantiene la declaración de eco, puede probarla para ver si el cambio de nombre funcionará como lo desea, luego elimine el eco para que funcione. Tan equivalente de Windows de ren * -hd.png * .png es: para el archivo en * .png do mv "$ file" "$ {archivo/-hd /}" hecho – jsherk

+2

para ejecutar el script que necesita : 1. guárdelo en el archivo 'rename.sh'; 2. hazlo ejecutable 'chmod 755 rename.sh'; 3. iniciarlo desde la carpeta actual donde tiene archivos para cambiar el nombre y script de shell './Rename.sh'; 4. si el resultado es bueno, elimine 'echo' del script y ejecútelo de nuevo. Necesitaba agregar extensión al grupo de archivos. así que mi acción en el scrip fue así: 'mv" $ file "" $ {file} .jpeg "' –

0
ls -1 *.MP4.mov | while read f; do mv -i "$f" "$(basename \"$f\" .MP4.mov)"; done 

Editar: completamente reescrito.

+0

me mantiene pidiendo entrada ... –

+0

'> > > > > > >' –

+0

Si lo hace lo que quiere, quitar el - i –

0
for i in *; 
do j=`echo $i | cut -d . -f 1`; 
j=$j".mov"; 
mv $i $j; 
done 

esto va a cortar todo delante del primer punto y anexa .mov

pero si algunos archivos son, por ejemplo, hi.2.mov y hi.1.mov uno se sobrescribirán, a fin de utilizarlo con cuidado ^^

33

Acabo de utilizar con éxito Automator (la primera vez que me molesté), y funciona muy bien. Guardé la automatización como un servicio. Tardó unos 10 segundos en hacer algo fácilmente reutilizable:

  1. Abrir Automator.
  2. Como tipo de documento, elija "Servicio".
  3. Cambiar servicio recibe el "Texto" seleccionado para "archivos y carpetas".
  4. Considere cambiar "cualquier aplicación" a Finder.
  5. En la barra lateral, seleccione "Archivos & Carpetas" (en Biblioteca) y desde las acciones enumeradas, en la columna central, arrastre "Cambiar nombre de elementos del buscador" a la derecha y suéltelo dentro de "Arrastrar acciones o archivos aquí para compilar" su flujo de trabajo ".
  6. Cambie la acción que acaba de agregar de "Agregar fecha u hora" a "Hacer secuencia".
  7. Haga clic en "Opciones" en la parte inferior de la acción y marque la opción "Mostrar esta acción cuando se ejecuta el flujo de trabajo".
  8. Pulse "CMD + S" para guardar el servicio como algo así como "Reemplazar texto" ..
  9. ¡Listo!

Ahora puede hacer clic con el botón derecho en cualquier selección del Finder, ir al menú Servicio y seleccionar "Reemplazar texto", completar cómo desea que se cambie o reemplazar el texto y hacer clic en "Continuar" para aplicar los cambios configurados.

+0

¡Gracias! El método anterior no funcionó por alguna razón. – Norris

+0

¿Qué, dónde o cuándo falló? No hay mensajes de error en absoluto? – Johan

+0

Lo voté porque la pregunta tiene una etiqueta de "terminal". – v42

10

Para probar imprimir la operación:

for file in *.MP4.mov; do j=`echo $file | cut -d . -f 1`;j=$j".mov";echo mv \"$file\" \"$j\"; done 

para hacer que funcione:

for file in *.MP4.mov; do j=`echo $file | cut -d . -f 1`;j=$j".mov";mv "$file" "$j"; done 
+1

La opción de impresión de prueba ganó mi voto. ¡Gracias! –

+0

¡Yay esto funcionó! Gracias. –

+0

Gracias por la solución de una línea – semihcosu

1
for i in `ls *png`;do echo mv $i "${i%%.*}"@xx."${i##*.}";done 
11
for n in *.MP4.mov 
do 
    mv $n $(echo $n | sed -e 's/.MP4//') 
done 

Esto funcionará incluso en conchas muy antiguas que no tienen sustitución de parámetros , y al menos es un poco más legible para mis ojos.

+0

He aplicado esto a los archivos que usan '_MG_' en su nombre que necesitaba para cambiar a' -IMG_' a la perfección mediante la modificación con un '*' y un '*' en el medio. Trabajó un encanto. ¡Gracias! –

4

en Mac OS X puede instalar el comando rename través Homebrew: brew install rename

A continuación, puede cambiar el nombre usando búsqueda/reemplazo de esa carpeta en la línea de comandos:

rename 's/\.MP4\././' * 

También puede ver más opciones usando man rename.

1

vimv le permite cambiar el nombre de varios archivos utilizando las capacidades de edición de texto de Vim.

Al ingresar a vimv se abre una ventana de Vim que enumera todos los archivos y se puede hacer coincidencia de patrones, selección visual, etc. para editar los nombres. Después de salir de Vim, se cambiarán los nombres de los archivos.

[Descargo de responsabilidad: soy el autor de la herramienta]

Cuestiones relacionadas