GNU/Linux >> Tutoriales Linux >  >> Linux

Agregar marca de tiempo a un nombre de archivo con mv en BASH

Las pocas líneas que publicaste de tu guión me parecen bien. Probablemente sea algo un poco más profundo.

Necesita encontrar qué línea le está dando este error. Agregar set -xv en la parte superior de su script. Esto imprimirá el número de línea y el comando que se está ejecutando en STDERR . Esto lo ayudará a identificar en qué parte de su secuencia de comandos obtiene este error en particular.

Por cierto, ¿tienes un shebang en la parte superior de tu guión? Cuando veo algo como esto, normalmente espero que sea un problema con Shebang. Por ejemplo, si tuvieras #! /bin/bash en la parte superior, pero su intérprete de bash se encuentra en /usr/bin/bash , verá este error.

EDITAR

Nueva pregunta:¿Cómo puedo guardar el archivo correctamente en primer lugar, para evitar tener que realizar esta corrección cada vez que reenvío el archivo?

Dos formas:

  1. Seleccione Editar->Conversión EOL->Formato Unix elemento de menú cuando edita un archivo. Una vez que tenga los finales de línea correctos, Notepad++ los conservará.
  2. Para asegurarse de que todos los archivos nuevos tengan los finales de línea correctos, vaya a Configuración->Preferencias elemento de menú y abra las Preferencias caja de diálogo. Seleccione el Nuevo documento/Directorio predeterminado pestaña. En Nuevo documento y Formato , seleccione Unix boton de radio. Haga clic en Cerrar botón.

Yo uso este comando para simplemente rotar un archivo:

mv output.log `date +%F`-output.log

En la carpeta local tengo 2019-09-25-output.log


mv server.log logs/$(date -d "today" +"%Y%m%d%H%M").log

Un método de una sola línea dentro de bash funciona así.

[alguna salida]>$(fecha "+%Y.%m.%d-%H.%M.%S").ver

creará un archivo con un nombre de marca de tiempo con extensión ver. Una instantánea de la lista de archivos de trabajo a un nombre de archivo de marca de fecha de la siguiente manera puede mostrar que funciona.

find . -type f -exec ls -la {} \; | cut -d ' ' -f 6- >$(date "+%Y.%m.%d-%H.%M.%S").ver

Por supuesto

cat somefile.log > $(date "+%Y.%m.%d-%H.%M.%S").ver

o incluso más simple

ls > $(date "+%Y.%m.%d-%H.%M.%S").ver


Linux
  1. El Bash'?

  2. Bash -c con parámetros posicionales?

  3. ¿Renombrar en masa el archivo Bash con el contador?

  4. Alias ​​con variable en bash

  5. El nombre del archivo no se imprime correctamente con guión bajo _ en Bash

Bash:escribir en archivo

Comando de fuente Bash

Bash:Agregar al archivo

35 ejemplos de secuencias de comandos Bash

Redirección de Bash explicada con ejemplos

Ejecutar un script bash o un binario c en un sistema de archivos con la opción noexec