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.

find . -print0 | while read -d $'\0' file; do touch -c -t AAMMDDhhmm "$file"; done

Comentarios

Unknown dijo…
Un pequeño script, con un método algo antigüo (la verdad no sé mucho de bash aún) para modificar con la misma fecha los archivos dentro del escritorio en el que se ejecuta este comando:
find . -print0 | while read -d $'\0' file; do touch -c -t AAMMDDhhmm "$file"; done

espero que les sirva, saludos Julio
Orzalaga dijo…
Excelente Ricardo, pero diria yo igual que ya pasaste de un metodo basico (antiguo) a un metodo complejo ya que si no se maneja adecuadamente se pueden cambiar la fecha en todos los archivos y ese no es la idea del Post. Sin importar el fin es tremendamente valido tu aporte.
Inukaze dijo…
Umm yo pienso que seria mejor hacer un "Mini-Script" , por ejemplo

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.
Anónimo dijo…
Mil Gracias Ricardo, justo lo que estaba buscando!! todos los archivos de una carpeta!
Anónimo dijo…
Yo solía usar esto para actualizar el contenido de una carpeta:

find ./nombre_carpeta/ -exec touch {} \;

Entradas más populares de este blog

Que sera Web 2.0 ?

Que es el Cable Submarino Arcos-1?

El Airbus A380 en Colombia - Medellin