Cambiar-Modificar Fecha de un Archivo en Linux
Puede ser necesario que en algún momento tengamos que realizar el cambio de fecha en un archivo desde la consola Shell de Linux y la mejor manera de hacerlo sin cambiar ninguna informacion interna del archivo es utilizando el comando touch de la siguiente manera:
Listamos el archivo "logrotate.status" y observamos un error en la fecha:
[root@linux]# ls -la /var/lib/logrotate.status
-rw-r--r-- 1 root root 1571 ene 27 1988 /var/lib/logrotate.status
Ejecutamos el archivo:
touch -c -t 0911230950 /var/lib/logrotate.status
En donde "0911230950" equivale a: AAMMDDhhmm en el formato de fecha.
Por ultimo listamos el archivo
[root@cacti log]# ls -la /var/lib/logrotate.status
-rw-r--r-- 1 root root 1571 nov 23 2009 /var/lib/logrotate.status
De esta manera ya esta actualizada la hora del archivo sin modificar su contenido.
Actualización: Gracias al aporte de nuestro amigo Ricardo anexamos otro metodo en donde podemos Actualizar las fechas de varios archivos ubicados especificamente desde donde se ejecute el comando.
Listamos el archivo "logrotate.status" y observamos un error en la fecha:
[root@linux]# ls -la /var/lib/logrotate.status
-rw-r--r-- 1 root root 1571 ene 27 1988 /var/lib/logrotate.status
Ejecutamos el archivo:
touch -c -t 0911230950 /var/lib/logrotate.status
En donde "0911230950" equivale a: AAMMDDhhmm en el formato de fecha.
Por ultimo listamos el archivo
[root@cacti log]# ls -la /var/lib/logrotate.status
-rw-r--r-- 1 root root 1571 nov 23 2009 /var/lib/logrotate.status
De esta manera ya esta actualizada la hora del archivo sin modificar su contenido.
Actualización: Gracias al aporte de nuestro amigo Ricardo anexamos otro metodo en donde podemos Actualizar las fechas de varios archivos ubicados especificamente desde donde se ejecute el comando.
find . -print0 | while read -d $'\0' file; do touch -c -t AAMMDDhhmm "$file"; done
Comentarios
find . -print0 | while read -d $'\0' file; do touch -c -t AAMMDDhhmm "$file"; done
espero que les sirva, saludos Julio
dia_y_hora=`date +"%y%m%d%I%M"`
cd $PWD
touch -c -t $dia_y_hora *.*
Ahora con las carpetas si es verdad que no tengo idea xD
Tal vez usando algunas varibles o algo , pero no sabria como utilizar por ejemplo las siguiente :
filename="${1%.*}"
namefile="${filename##*/}"
filedir="${namefile%.*}"
Bueno mejor diganme ustedes porque yo apenas estoy empezando a entender bash y eso que he hecho varios mini-scripts.
find ./nombre_carpeta/ -exec touch {} \;