¿Cómo batch renombrar files a través de Terminal usando la date del file como nombre de file?

Tengo un montón de fotos y videos de diferentes fonts y quiero normalizar los nombres de file utilizando Terminal. Miré un montón de diferentes herramientas de NameChanger a Automator y Finder en sí. NameChanger no permite más de una acción a la vez y Finder y Automator no me permiten establecer el formatting de date con una cadena de formatting.

He estado jugando con algunas funciones bash y he encontrado que

  • Reproducir sonidos de alerta desde el terminal
  • ¿Hay un equivalente de Mac para la carpeta UDEV en linux?
  • ¿Cómo puedo borrar mi historial de Bash en OS X?
  • Obtenga el valor del sensor de luz ambiental desde ioreg
  • ¿Cómo abrir una nueva pestaña Terminal en el directory de trabajo actual?
  • Permitir que el Terminal.app pase key de command basado pulsaciones de teclas a progtwigs de terminal
  • stat -f "%Sm" -t "%Y-%m-%d %H.%M.%S" file.ext 

    produce el formatting de date y hora que busco.

    Sin embargo, encontré que

     for file in *.* do mv "$file" echo stat -f "%Sm" -t "%Y-%m-%d %H.%M.%S" "$file" done 

    devoluciones

     -bash: syntax error near unexpected token `done' 

    No soy realmente competente con bash scripting por lo que excusa cualquier incompetencia en los ejemplos anteriores.

    Lo que quiero hacer es quitar todo el nombre base del file (todo antes de .jpg) y replacelo con el formatting de date y hora que recibí de stat anterior.

    Por ejemplo:

     20160708_151344000_iOS.jpg --> 2016-07-08 15.13.44.jpg WP_20140915_02_03_15_Raw.jpg --> 2014-09-15 02.03.15.jpg 

    ¿Cómo debo hacer esto?

  • ¿Por qué necesito poner sh antes de ejecutar files .sh?
  • ¿`Man ls> temp.txt`. Archivo de text de salida está dañado
  • Apagar / encender Wifi con una sola tecla?
  • compruebe si el almacenamiento está disponible y si se ejecuta una rutina de copy de security con passwordphrase y compruebe más
  • ¿Cómo puedo formatear la salida de ping en bash?
  • Navegue hasta una carpeta llamada (0)
  • 2 Solutions collect form web for “¿Cómo batch renombrar files a través de Terminal usando la date del file como nombre de file?”

     for f in *.*; do echo mv "$f" "$(stat -f '%Sm' -t '%Y-%m-%d %H.%M.%S' "$f").${f##*.}" done 

    O como una línea:

     for f in *.*; do echo mv "$f" "$(stat -f '%Sm' -t '%Y-%m-%d %H.%M.%S' "$f").${f##*.}"; done 

    En cualquier caso, quite el command echo después de la testing.

    La porción ${f##*.} command obtiene la extensión de $f para poder usar el glob *.* Vs. usando una extensión en el for f in , es decir, for f in *.* Vs. for f in *.jpg

     for f in *.jpg; do echo mv "$f" "$(stat -f '%Sm' -t '%Y-%m-%d %H.%M.%S' "$f")".jpg done 

    Quite el echo una vez que esté seguro de que el command parece correcto.

    Loving Apple Products like poisoning (iPhone, iPad, iMac, Macbook, iWatch).