Cómo generar un bash / script automático

0

Soy nuevo en los sistemas de terminal y Unix. Estoy buscando una forma de crear automáticamente un archivo por lotes.

Digamos que tengo un montón de archivos en una carpeta y quiero cambiar las fechas de creación. Tal como está ahora, tengo que touch -t 201704011215.00 Desktop/Old_cam_vids_converted_from_avi_to_mp4/file0001.mp34 para cada archivo. Lo que me gustaría hacer es algo como esto: ls -lT /Desktop/Old_avi_to_conv/*.avi y tener la fecha y la hora de cada archivo como parámetro de fecha y hora para el comando táctil.

¿Cómo puedo lograr esto?

Editar: Espero que la explicación lo haga más claro. Este es el escenario:

  • Dos carpetas en el escritorio que contienen archivos de video.
  • uno (folder_1) contiene los archivos originales (.avi)
  • el segundo (folder_2) contiene archivos convertidos (.mp4)

  • todos los archivos en la segunda carpeta tienen una fecha secuencial más nueva, ya que la herramienta de conversión realizada trabajó a través de una lista de archivos.

  • Necesito tomar la marca de fecha / hora del archivo original en la primera carpeta y asignarlo al archivo convertido en la segunda carpeta.

  • cada archivo en la primera carpeta tiene una fecha diferente, posiblemente con días y meses de diferencia.

  • los archivos en la segunda carpeta tienen los mismos nombres que los de la primera carpeta, excepto el sufijo del archivo, por ejemplo: folder_1 / CIMG_0001.avi es el original de folder_2 / CIMG_0001.mp4 folder_1 / PIC_0003.avi es el original de folder_2 / PIC_0003.mp4 folder_1 / PIC_0015.avi es el original de folder_2 / PIC_0015.mp4 folder_1 / CIMG_003.avi id el original de folder_2 / CIMG_0003.mp4

pregunta reno 03.04.2017 - 07:56

1 respuesta

2

Debe procesar cada archivo mp4 individualmente:

cd folder_2
for m in *.mp4; do
    a="${m%.mp4}".avi
    if [[ -r "/path/to/folder_1/$a" ]]; then
         echo touch -r "/path/to/folder_1/$a" "$m"
    fi
done

Ejecutar una vez para verificar que la salida generada tiene sentido, luego elimine echo y vuelva a ejecutar.

PS: Esto supone que los nombres de los archivos de video no contienen la cadena ".mp4" como tal.

    
respondido por el nohillside 05.04.2017 - 17:27

Lea otras preguntas en las etiquetas