Parece que has mezclado varias cosas.
set today = 'date +%Y'
se parece a la sintaxis de tcsh, pero incluso en tcsh asigna la cadena date +%Y
a la variable today
, no ejecuta el date
comando. Como probablemente esté usando bash o algún otro shell POSIX, la sintaxis de una asignación es today=some_value
(sin espacios alrededor del signo igual). Para ejecutar el comando y asignar su salida a la variable, use la sustitución del comando :
today=$(date +%Y-%m-%d)
(También he completado la especificación de la fecha). Puede usar comillas inversas en lugar de paréntesis en dólares, pero es propenso a confundirse visualmente con comillas hacia adelante, y las reglas para cuando necesita comillas dentro de un comando con comillas inversas son bastante complejas y dependen de la implementación, por lo que es mejor no atenerse a $(…)
(lo que tiene el mismo efecto con una sintaxis más sana).
Usaste &
al final de varios comandos. Eso hace que el comando se ejecute en segundo plano, lo que no se desea aquí. Sospecho que querías decir &&
, lo que significa ejecutar el siguiente comando solo si el primer comando tuvo éxito.
today=$(date +%Y-%m-%d)
mkdir -p The_Logs &&
find …
Una alternativa al uso &&
después de cada comando es comenzar su script con set -e
. Esto le dice al shell que deje de ejecutar el script tan pronto como cualquier comando devuelva un estado distinto de cero (excepto los comandos en if
condiciones y algunos otros casos).
set -e
today=$(date +%Y-%m-%d)
mkdir -p The_Logs
find …
Su find
comando está bien, pero probablemente no haga lo que pretende hacer (aunque no estoy seguro de qué es eso).
Estás creando un directorio con mkdir
y luego lo atraviesas inmediatamente find
. Eso no será útil a menos que el directorio ya exista. ¿Quería crear un directorio para los registros de hoy y mover archivos recientes de The_Logs
un directorio llamado, por ejemplo The_Logs.2012-02-11
?
mkdir -p "The_Logs.$today"
find The_Logs -mtime -1 -exec mv {} "The_Logs.$today" \;
¿O quiso cambiar el nombre de los archivos de registro de hoy para agregar el sufijo $today
? Eso requiere calcular el nombre de archivo diferente para cada archivo a mover.
find The_Logs -mtime -1 -exec sh -c 'mv "$0" "$0.$today"' {} \;
Tenga en cuenta que solía -mtime
mover archivos en función de su tiempo de modificación, y no -atime
, que es el momento en que el archivo se leyó por última vez (si su sistema realiza un seguimiento de eso, si no lo hace, el momento puede estar tan atrás como el mtime).
:
ya que se leerá como host en rsync y scp. stackoverflow.com/a/37143274/390066