1 votos

Mac Terminal - Cambiar El Nombre De Mantener Últimos 6 Caracteres

Estoy usando la integrada en el Terminal, y soy totalmente nuevo en esto de codificación, así que voy a necesitar para saber exactamente qué tipo cuando abro el Terminal. También, por favor, no me dirija a cualquier otro software. Así que digamos...

  • Tengo una carpeta que se llama "Poder" en mi Escritorio (sin las comillas por supuesto).

  • En esa carpeta hay varios .tif archivos con el nombre como el siguiente:

    • Washington,George-150987.tif
    • Lincoln,Abraham-755103.tif
    • Smith,Jack & Jill-102347.tif
    • Jones-Newman,Martha & John Newman-137881.tif
  • Estos nombres tienen una cosa en común. Todos ellos tienen un código de 6 dígitos del número antes de la extensión, y siempre lo hará.

  • Quiero un camino a la hornada cambiar el nombre de un gran grupo de estos archivos de mantener sólo los últimos 6 dígitos. El infierno, si hay un código que podría cambiar el nombre de guardar el número, que sería EL MEJOR, porque en raras ocasiones, puede ser un

    Smith,Jane-108965(mrs).tif

Pero si no hay ningún código para que, está bien, puedo usar otro software para deshacerse de que (mrs) en un segundo.

6voto

Hacer una copia de seguridad de los archivos en primer lugar!

A continuación, abra el Terminal (inicio un bash shell si usted no está utilizando el shell por defecto) y ejecutar

cd ~/Desktop/Power
\ls | while IFS= read f; do echo mv -vn "$f" "${f/*-/}"; done

Esto no cambie nada, sino simplemente mostrar cómo cada archivo se cambia el nombre. Si la salida se ve bien, ejecutar

\ls | while IFS= read f; do mv -vn "$f" "${f/*-/}"; done

PS: Esto supone que el único - en los nombres de archivo está justo antes del número.


Algunas explicaciones acerca de lo que está pasando aquí:

  • \ls listas de todos los archivos, \ asegura que hay un alias de expansión se lleva a cabo. La salida se introduce en un tubo, pero no necesitamos que preocuparse acerca de multi-columna de salida debido a que ls , en estos casos, automáticamente asume -1
  • while ... do; ...; done se repite a lo largo de todas las líneas/archivos
  • IFS= read f lee un nombre de archivo de entrada estándar en $f. El IFS= asegura que ninguno de los caracteres de la entrada estándar confunde read a esperar dos valores en lugar de uno (técnicamente, este es, probablemente, no se requiere aquí, pero es una buena práctica, de todos modos)
  • ${f/*-/} ¿de sustitución de cadenas en el valor de $f, en este caso la sustitución de todo, hasta e incluyendo la - con la cadena vacía. Ver man bash (Parámetro de Expansión) para más detalles.

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